瀏覽代碼

torque windows integration of epoxy

Jeff Hutchinson 9 年之前
父節點
當前提交
6e692ea9cf

+ 2 - 2
Engine/source/gfx/gl/gfxGLDevice.cpp

@@ -81,8 +81,8 @@ void loadGLExtensions(void *context)
    GL::gglPerformExtensionBinds(context);
 }
 
-void STDCALL glDebugCallback(GLenum source, GLenum type, GLuint id,
-    GLenum severity, GLsizei length, const GLchar* message, void* userParam)
+void STDCALL glDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, 
+	const GLchar *message, const void *userParam)
 {
     if (severity == GL_DEBUG_SEVERITY_HIGH)
         Con::errorf("OPENGL: %s", message);

+ 9 - 3
Engine/source/gfx/gl/tGL/tGL.cpp

@@ -25,13 +25,19 @@
 #include "core/strings/stringFunctions.h"
 #include "console/console.h"
 
+#ifdef TORQUE_OS_WIN
+   #include "tWGL.h"
+#endif
+
 namespace GL
 {
    void gglPerformBinds()
    {
-      glewExperimental = GL_TRUE;
-      GLenum err = glewInit();
-      AssertFatal(GLEW_OK == err, avar("Error: %s\n", glewGetErrorString(err)) );
+      // JTH: epoxy has one oddity with windows. You need to bind the context
+      // after creating the context to udpate the internals of epoxy.
+#ifdef TORQUE_OS_WIN
+      epoxy_handle_external_wglMakeCurrent();
+#endif
    }
 
    void gglPerformExtensionBinds(void *context)

+ 2 - 2
Engine/source/gfx/gl/tGL/tWGL.h

@@ -28,9 +28,9 @@
 #ifdef TORQUE_OPENGL
 
 #include "tGL.h"
-#include "GL/wglew.h"
+#include <epoxy/wgl.h>
 
-#define gglHasWExtension(EXTENSION) WGLEW_##EXTENSION
+#define gglHasWExtension(window, EXTENSION) epoxy_has_wgl_extension(window, "WGL_" # EXTENSION)
 
 #endif //TORQUE_OPENGL
 

+ 1 - 1
Engine/source/gfx/gl/win32/gfxGLDevice.win.cpp

@@ -272,7 +272,7 @@ void GFXGLDevice::init( const GFXVideoMode &mode, PlatformWindow *window )
    int debugFlag = 0;
 #endif
 
-   if( gglHasWExtension(ARB_create_context) )
+   if( gglHasWExtension(hdcGL, ARB_create_context) )
    {
       int const create_attribs[] = {
                WGL_CONTEXT_MAJOR_VERSION_ARB, OGL_MAJOR,

+ 4 - 4
Engine/source/platformWin32/WinPlatformGL.cpp

@@ -5,10 +5,10 @@
 
 void PlatformGL::setVSync(const int i)
 {
-    if (WGLEW_EXT_swap_control)
-    {
-        wglSwapIntervalEXT(i);
-    }
+   if (gglHasWExtension(wglGetCurrentDC(), EXT_swap_control))
+   {
+      wglSwapIntervalEXT(i);
+   }
 }
 
 #endif