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:
parent
21f46db869
commit
1557d519af
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue
Block a user