1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

use glGetStringi if available (fixes errors on core profile)

This commit is contained in:
FunkyFr3sh 2024-08-28 09:19:32 +02:00
parent dffed46947
commit efd5bc6c32
2 changed files with 23 additions and 4 deletions

View File

@ -108,6 +108,8 @@ extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
extern PFNGLTEXBUFFERPROC glTexBuffer;
extern PFNGLGETINTEGERVPROC glGetIntegerv;
extern PFNGLGETSTRINGIPROC glGetStringi;
extern HMODULE g_oglu_hmodule;
extern BOOL g_oglu_got_version2;

View File

@ -88,6 +88,8 @@ PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB;
PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
PFNGLTEXBUFFERPROC glTexBuffer;
PFNGLGETINTEGERVPROC glGetIntegerv;
PFNGLGETSTRINGIPROC glGetStringi;
HMODULE g_oglu_hmodule;
BOOL g_oglu_got_version2;
@ -192,6 +194,8 @@ void oglu_init()
wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)xwglGetProcAddress("wglGetExtensionsStringARB");
glTexBuffer = (PFNGLTEXBUFFERPROC)xwglGetProcAddress("glTexBuffer");
glGetIntegerv = (PFNGLGETINTEGERVPROC)xwglGetProcAddress("glGetIntegerv");
glGetStringi = (PFNGLGETSTRINGIPROC)xwglGetProcAddress("glGetStringi");
char* glversion = (char*)glGetString(GL_VERSION);
if (glversion)
@ -227,11 +231,24 @@ void oglu_init()
BOOL oglu_ext_exists(char* ext, HDC hdc)
{
char* glext = (char*)glGetString(GL_EXTENSIONS);
if (glext)
if (glGetIntegerv && glGetStringi)
{
if (strstr(glext, ext))
GLint n = 0;
glGetIntegerv(GL_NUM_EXTENSIONS, &n);
for (GLint i = 0; i < n; i++)
{
char* glext = (char*)glGetStringi(GL_EXTENSIONS, i);
if (glext && strcmp(glext, ext) == 0)
return TRUE;
}
}
else
{
char* glext = (char*)glGetString(GL_EXTENSIONS);
if (glext && strstr(glext, ext))
return TRUE;
}