mirror of
https://github.com/raysan5/raylib.git
synced 2025-09-08 12:28:15 +00:00
Review OpenGL ES 2.0 extensions check
This commit is contained in:
23
src/rlgl.h
23
src/rlgl.h
@@ -1529,24 +1529,33 @@ void rlglInit(int width, int height)
|
|||||||
const char **extList = RL_MALLOC(sizeof(const char *)*numExt);
|
const char **extList = RL_MALLOC(sizeof(const char *)*numExt);
|
||||||
|
|
||||||
// Get extensions strings
|
// Get extensions strings
|
||||||
for (int i = 0; i < numExt; i++) extList[i] = (char *)glGetStringi(GL_EXTENSIONS, i);
|
for (int i = 0; i < numExt; i++) extList[i] = (const char *)glGetStringi(GL_EXTENSIONS, i);
|
||||||
|
|
||||||
#elif defined(GRAPHICS_API_OPENGL_ES2)
|
#elif defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
// Allocate 512 strings pointers (2 KB)
|
// Allocate 512 strings pointers (2 KB)
|
||||||
const char **extList = RL_MALLOC(sizeof(const char *)*512);
|
const char **extList = RL_MALLOC(sizeof(const char *)*512);
|
||||||
|
|
||||||
|
const char *extensions = (const char *)glGetString(GL_EXTENSIONS); // One big const string
|
||||||
|
|
||||||
|
// NOTE: We have to duplicate string because glGetString() returns a const string
|
||||||
|
int len = strlen(extensions) + 1;
|
||||||
|
char *extensionsDup = (char *)RL_CALLOC(len, 1);
|
||||||
|
strcpy(extensionsDup, extensions);
|
||||||
|
|
||||||
// Get extensions strings
|
extList[numExt] = extensionsDup;
|
||||||
char *extensions = (char *)glGetString(GL_EXTENSIONS); // One big static const string returned
|
|
||||||
int len = strlen(extensions);
|
|
||||||
|
|
||||||
for (int i = 0; i < len; i++)
|
for (int i = 0; i < len; i++)
|
||||||
{
|
{
|
||||||
if (i == ' ')
|
if (extensionsDup[i] == ' ')
|
||||||
{
|
{
|
||||||
extList[numExt] = &extensions[i + 1];
|
extensionsDup[i] = '\0';
|
||||||
|
|
||||||
numExt++;
|
numExt++;
|
||||||
|
extList[numExt] = &extensionsDup[i + 1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: Duplicated string (extensionsDup) must be deallocated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TraceLog(LOG_INFO, "Number of supported extensions: %i", numExt);
|
TraceLog(LOG_INFO, "Number of supported extensions: %i", numExt);
|
||||||
@@ -1622,6 +1631,8 @@ void rlglInit(int width, int height)
|
|||||||
RL_FREE(extList);
|
RL_FREE(extList);
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
RL_FREE(extensionsDup); // Duplicated string must be deallocated
|
||||||
|
|
||||||
if (vaoSupported) TraceLog(LOG_INFO, "[EXTENSION] VAO extension detected, VAO functions initialized successfully");
|
if (vaoSupported) TraceLog(LOG_INFO, "[EXTENSION] VAO extension detected, VAO functions initialized successfully");
|
||||||
else TraceLog(LOG_WARNING, "[EXTENSION] VAO extension not found, VAO usage not supported");
|
else TraceLog(LOG_WARNING, "[EXTENSION] VAO extension not found, VAO usage not supported");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user