diff --git a/libs/gfx/gl-loader-generator-config.json b/libs/gfx/gl-loader-generator-config.json index d3068d2f..e92512dd 100644 --- a/libs/gfx/gl-loader-generator-config.json +++ b/libs/gfx/gl-loader-generator-config.json @@ -14,5 +14,6 @@ "undef": 4, "strip": true, "out_header": "gl.hpp", - "out_source": "gl.cpp" + "out_source": "gl.cpp", + "include": "" } diff --git a/libs/gfx/include/psemek/gfx/gl.hpp b/libs/gfx/include/psemek/gfx/gl.hpp index 2bce2d0d..6ee8f0bb 100644 --- a/libs/gfx/include/psemek/gfx/gl.hpp +++ b/libs/gfx/include/psemek/gfx/gl.hpp @@ -1,5 +1,32 @@ #pragma once +// Prevent inclusion of other OpenGL-related headers + +#if defined(__glew_h__) || defined(__GLEW_H__) +#error Attempt to include auto-generated header after including glew.h +#endif +#if defined(__gl_h_) || defined(__GL_H__) +#error Attempt to include auto-generated header after including gl.h +#endif +#if defined(__glext_h_) || defined(__GLEXT_H_) +#error Attempt to include auto-generated header after including glext.h +#endif +#if defined(__gltypes_h_) +#error Attempt to include auto-generated header after gltypes.h +#endif +#if defined(__gl_ATI_h_) +#error Attempt to include auto-generated header after including glATI.h +#endif + +#define __glew_h__ +#define __GLEW_H__ +#define __gl_h_ +#define __GL_H__ +#define __glext_h_ +#define __GLEXT_H_ +#define __gltypes_h_ +#define __gl_ATI_h_ + // Undefine some macros that may interfere with OpenGL constants #undef ZERO diff --git a/libs/gfx/source/gl.cpp b/libs/gfx/source/gl.cpp index 6caf0f5b..edc2f2b2 100644 --- a/libs/gfx/source/gl.cpp +++ b/libs/gfx/source/gl.cpp @@ -1,3 +1,5 @@ +#include + #include #include @@ -52,28 +54,28 @@ namespace gl #pragma warning(disable: 4996) #endif - static int test_pointer(const PROC pTest) + static int test_pointer(const PROC p) { - ptrdiff_t iTest; - if(!pTest) return 0; - iTest = (ptrdiff_t)pTest; - - if(iTest == 1 || iTest == 2 || iTest == 3 || iTest == -1) return 0; - + ptrdiff_t i; + if (!p) return 0; + i = (ptrdiff_t)p; + + if(i == 1 || i == 2 || i == 3 || i == -1) return 0; + return 1; } static void * get_proc_address(const char *name) { - static HMODULE glMod = GetModuleHandleA("opengl32.dll"); + static HMODULE image = GetModuleHandleA("opengl32.dll"); - PROC pFunc = wglGetProcAddress(reinterpret_cast(name)); - if(TestPointer(pFunc)) + PROC func = wglGetProcAddress(reinterpret_cast(name)); + if (test_pointer(func)) { - return reinterpret_cast(pFunc); + return reinterpret_cast(func); } - return reinterpret_castGetProcAddress(glMod, reinterpret_cast(name)); + return reinterpret_cast(GetProcAddress(image, reinterpret_cast(name))); } #else // GLX