1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00

Rewrite OGLVideo::isExtensionSupported

Code taken from wareya/GLideN64.
This commit is contained in:
Sergey Lipskiy 2016-08-19 16:05:47 +07:00
parent 21f46db869
commit 1557d519af
3 changed files with 8 additions and 18 deletions

View File

@ -112,26 +112,13 @@ bool isGLError()
bool OGLVideo::isExtensionSupported(const char *extension)
{
GLubyte *where = (GLubyte *)strchr(extension, ' ');
if (where || *extension == '\0')
return false;
const GLubyte *extensions = glGetString(GL_EXTENSIONS);
const GLubyte *start = extensions;
for (;;) {
where = (GLubyte *)strstr((const char *)start, extension);
if (where == nullptr)
break;
GLubyte *terminator = where + strlen(extension);
if (where == start || *(where - 1) == ' ')
if (*terminator == ' ' || *terminator == '\0')
GLint count = 0;
glGetIntegerv(GL_NUM_EXTENSIONS, &count);
for (u32 i = 0; i < count; ++i) {
const char* name = (const char*)glGetStringi(GL_EXTENSIONS, i);
if (strcmp(extension, name) == 0)
return true;
start = terminator;
}
return false;
}

View File

@ -100,6 +100,7 @@ PFNGLUNMAPBUFFERPROC glUnmapBuffer;
PFNGLDELETEBUFFERSPROC glDeleteBuffers;
PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
PFNGLMEMORYBARRIERPROC glMemoryBarrier;
PFNGLGETSTRINGIPROC glGetStringi;
PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
@ -203,6 +204,7 @@ void initGLFunctions()
glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)glGetProcAddress( "glDeleteBuffers" );
glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)glGetProcAddress( "glBindImageTexture" );
glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)glGetProcAddress( "glMemoryBarrier" );
glGetStringi = (PFNGLGETSTRINGIPROC)glGetProcAddress("glGetStringi");
glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)glGetProcAddress("glGetUniformBlockIndex");
glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)glGetProcAddress("glUniformBlockBinding");

View File

@ -90,6 +90,7 @@ extern PFNGLUNMAPBUFFERPROC glUnmapBuffer;
extern PFNGLDELETEBUFFERSPROC glDeleteBuffers;
extern PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
extern PFNGLMEMORYBARRIERPROC glMemoryBarrier;
extern PFNGLGETSTRINGIPROC glGetStringi;
extern PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;