glut: Use the official WGL functions.

Especially using wglGetPixelFormat instead of GetPixelFormat causes
problems with opengl32.dll and drivers that not hack around this issue.
This commit is contained in:
José Fonseca
2009-02-10 11:36:48 +00:00
parent aeed92952e
commit 5b0807b72f
3 changed files with 9 additions and 32 deletions

View File

@@ -10,7 +10,6 @@ target = 'glut32'
env.Replace(CPPDEFINES = [ env.Replace(CPPDEFINES = [
'BUILD_GLUT32', 'BUILD_GLUT32',
'GLUT_BUILDING_LIB', 'GLUT_BUILDING_LIB',
'MESA',
'NDEBUG', 'NDEBUG',
'GLUT_NO_WARNING_DISABLE', 'GLUT_NO_WARNING_DISABLE',
]) ])

View File

@@ -32,10 +32,6 @@
#include <GL/glut.h> #include <GL/glut.h>
#if defined(MESA) && defined(_WIN32) && !defined(__CYGWIN32__)
#include <GL/mesa_wgl.h>
#endif
#ifndef _WIN32 #ifndef _WIN32
/* added by BrianP: */ /* added by BrianP: */
#ifndef APIENTRY #ifndef APIENTRY
@@ -48,24 +44,6 @@
/* GLUT_BUILDING_LIB is used by <GL/glut.h> to 1) not #pragma link /* GLUT_BUILDING_LIB is used by <GL/glut.h> to 1) not #pragma link
with the GLUT library, and 2) avoid the Win32 atexit hack. */ with the GLUT library, and 2) avoid the Win32 atexit hack. */
/* This must be done after <GL/gl.h> is included. MESA is defined
if the <GL/gl.h> is supplied by Brian Paul's Mesa library. */
#if defined(MESA) && defined(_WIN32)
/* Mesa implements "wgl" versions of GDI entry points needed for
using OpenGL. Map these "wgl" versions to the GDI names via
macros. */
#define ChoosePixelFormat wglChoosePixelFormat
#define DescribePixelFormat wglDescribePixelFormat
#define GetPixelFormat wglGetPixelFormat
#define SetPixelFormat wglSetPixelFormat
#define SwapBuffers wglSwapBuffers
#define GetCurrentContext wglGetCurrentContext
#define GetCurrentDC wglGetCurrentDC
#define MakeCurrent wglMakeCurrent
#define CreateContext wglCreateContext
#define DeleteContext wglDeleteContext
#endif /* MESA */
#ifdef SUPPORT_FORTRAN #ifdef SUPPORT_FORTRAN
#include <GL/glutf90.h> #include <GL/glutf90.h>
#endif #endif
@@ -572,27 +550,27 @@ typedef struct {
#ifdef _WIN32 #ifdef _WIN32
#define MAKE_CURRENT_LAYER(window) \ #define MAKE_CURRENT_LAYER(window) \
{ \ { \
HGLRC currentContext = GetCurrentContext(); \ HGLRC currentContext = wglGetCurrentContext(); \
HDC currentDc = GetCurrentDC(); \ HDC currentDc = wglGetCurrentDC(); \
\ \
if (currentContext != window->renderCtx \ if (currentContext != window->renderCtx \
|| currentDc != window->renderDc) { \ || currentDc != window->renderDc) { \
MakeCurrent(window->renderDc, window->renderCtx); \ wglMakeCurrent(window->renderDc, window->renderCtx); \
} \ } \
} }
#define MAKE_CURRENT_WINDOW(window) \ #define MAKE_CURRENT_WINDOW(window) \
{ \ { \
HGLRC currentContext = GetCurrentContext(); \ HGLRC currentContext = wglGetCurrentContext(); \
HDC currentDc = GetCurrentDC(); \ HDC currentDc = wglGetCurrentDC(); \
\ \
if (currentContext != window->ctx || currentDc != window->hdc) { \ if (currentContext != window->ctx || currentDc != window->hdc) { \
MakeCurrent(window->hdc, window->ctx); \ wglMakeCurrent(window->hdc, window->ctx); \
} \ } \
} }
#define MAKE_CURRENT_OVERLAY(overlay) \ #define MAKE_CURRENT_OVERLAY(overlay) \
MakeCurrent(overlay->hdc, overlay->ctx) wglMakeCurrent(overlay->hdc, overlay->ctx)
#define UNMAKE_CURRENT() \ #define UNMAKE_CURRENT() \
MakeCurrent(NULL, NULL) wglMakeCurrent(NULL, NULL)
#define SWAP_BUFFERS_WINDOW(window) \ #define SWAP_BUFFERS_WINDOW(window) \
SwapBuffers(window->hdc) SwapBuffers(window->hdc)
#define SWAP_BUFFERS_LAYER(window) \ #define SWAP_BUFFERS_LAYER(window) \

View File

@@ -22,7 +22,7 @@ glXCreateContext(Display * display, XVisualInfo * visinfo,
routine. */ routine. */
HGLRC context; HGLRC context;
context = CreateContext(XHDC); context = wglCreateContext(XHDC);
#if 0 #if 0
/* XXX GLUT doesn't support it now, so don't worry about display list /* XXX GLUT doesn't support it now, so don't worry about display list