summaryrefslogtreecommitdiff
path: root/tests/OffscreenContextWGL.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2011-12-19 14:41:11 (GMT)
committerMarius Kintel <marius@kintel.net>2011-12-19 14:41:11 (GMT)
commit87ce149df2581361e8975bd1a0addf2b6ef61e3d (patch)
treec68db815a72cc767b6d51be0a57e9946c5f0a619 /tests/OffscreenContextWGL.cc
parentba1f0b7489dd5fa9bdc8c44068040f13113b40d0 (diff)
parent638743e2201c6869b48857dd2db5ec01df665162 (diff)
Merge branch 'master' into boost_filesystem
Conflicts: boost.pri tests/CMakeLists.txt
Diffstat (limited to 'tests/OffscreenContextWGL.cc')
-rw-r--r--tests/OffscreenContextWGL.cc58
1 files changed, 53 insertions, 5 deletions
diff --git a/tests/OffscreenContextWGL.cc b/tests/OffscreenContextWGL.cc
index 3b966e2..f36671c 100644
--- a/tests/OffscreenContextWGL.cc
+++ b/tests/OffscreenContextWGL.cc
@@ -22,6 +22,10 @@ For more info:
#include <GL/gl.h> // must be included after glew.h
+#include <map>
+#include <string>
+#include <sstream>
+
using namespace std;
struct OffscreenContext
@@ -44,6 +48,45 @@ void offscreen_context_init(OffscreenContext &ctx, int width, int height)
ctx.fbo = NULL;
}
+string get_os_info()
+{
+ OSVERSIONINFO osvi;
+
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&osvi);
+
+ SYSTEM_INFO si;
+ GetSystemInfo(&si);
+ map<WORD,const char*> archs;
+ archs[PROCESSOR_ARCHITECTURE_AMD64] = "amd64";
+ archs[PROCESSOR_ARCHITECTURE_IA64] = "itanium";
+ archs[PROCESSOR_ARCHITECTURE_INTEL] = "x86";
+ archs[PROCESSOR_ARCHITECTURE_UNKNOWN] = "unknown";
+
+ stringstream out;
+ out << "OS info: "
+ << "Microsoft(TM) Windows(TM) " << osvi.dwMajorVersion << " "
+ << osvi.dwMinorVersion << " " << osvi.dwBuildNumber << " "
+ << osvi.szCSDVersion;
+ if (archs.find(si.wProcessorArchitecture) != archs.end())
+ out << " " << archs[si.wProcessorArchitecture];
+ out << "\n";
+
+ out << "Machine: " << si.dwProcessorType;
+
+ return out.str();
+}
+
+string offscreen_context_getinfo(OffscreenContext *ctx)
+{
+ stringstream out;
+ out << "GL context creator: WGL\n"
+ << "PNG generator: lodepng\n"
+ << get_os_info();
+ return out.str();
+}
+
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
return DefWindowProc( hwnd, message, wparam, lparam );
@@ -87,11 +130,15 @@ bool create_wgl_dummy_context(OffscreenContext &ctx)
ZeroMemory( &pixformat, sizeof( pixformat ) );
pixformat.nSize = sizeof( pixformat );
pixformat.nVersion = 1;
- pixformat.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ pixformat.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pixformat.iPixelType = PFD_TYPE_RGBA;
- pixformat.cColorBits = 24;
- pixformat.cDepthBits = 16;
- pixformat.iLayerType = PFD_MAIN_PLANE;
+ pixformat.cGreenBits = 8;
+ pixformat.cRedBits = 8;
+ pixformat.cBlueBits = 8;
+ pixformat.cAlphaBits = 8;
+ pixformat.cDepthBits = 24;
+ pixformat.cStencilBits = 8;
+
chosenformat = ChoosePixelFormat( dev_context, &pixformat );
if (chosenformat==0) {
cerr << "MS GDI - ChoosePixelFormat failed\n";
@@ -142,7 +189,7 @@ OffscreenContext *create_offscreen_context(int w, int h)
cerr << "Unable to init GLEW: " << glewGetErrorString(err) << "\n";
return NULL;
}
- glew_dump();
+ //cerr << glew_dump(0);
ctx->fbo = fbo_new();
if (!fbo_init(ctx->fbo, w, h)) {
@@ -172,6 +219,7 @@ bool teardown_offscreen_context(OffscreenContext *ctx)
*/
bool save_framebuffer(OffscreenContext *ctx, const char *filename)
{
+ wglSwapLayerBuffers( ctx->dev_context, WGL_SWAP_MAIN_PLANE );
if (!ctx || !filename) return false;
int samplesPerPixel = 4; // R, G, B and A
vector<GLubyte> pixels(ctx->width * ctx->height * samplesPerPixel);
contact: Jan Huwald // Impressum