Update gl generator config (windows fixes)

This commit is contained in:
Nikita Lisitsa 2020-10-28 10:54:35 +03:00
parent fe5cd6510c
commit 149555889e
3 changed files with 43 additions and 13 deletions

View file

@ -14,5 +14,6 @@
"undef": 4,
"strip": true,
"out_header": "gl.hpp",
"out_source": "gl.cpp"
"out_source": "gl.cpp",
"include": "<psemek/gfx/gl.hpp>"
}

View file

@ -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

View file

@ -1,3 +1,5 @@
#include <psemek/gfx/gl.hpp>
#include <unordered_set>
#include <string>
@ -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<LPCSTR>(name));
if(TestPointer(pFunc))
PROC func = wglGetProcAddress(reinterpret_cast<LPCSTR>(name));
if (test_pointer(func))
{
return reinterpret_cast<void*>(pFunc);
return reinterpret_cast<void*>(func);
}
return reinterpret_cast<void*>GetProcAddress(glMod, reinterpret_cast<LPCSTR>(name));
return reinterpret_cast<void*>(GetProcAddress(image, reinterpret_cast<LPCSTR>(name)));
}
#else // GLX