mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-20 22:03:12 +01:00
GL: Added different code path when glGetString(GL_EXTENSIONS) returns NULL.
This commit is contained in:
@@ -1209,6 +1209,34 @@ namespace bgfx { namespace gl
|
||||
_minFilter = s_textureFilterMin[min][_hasMips ? mip+1 : 0];
|
||||
}
|
||||
|
||||
void updateExtension(const char* _name)
|
||||
{
|
||||
bool supported = false;
|
||||
for (uint32_t ii = 0; ii < Extension::Count; ++ii)
|
||||
{
|
||||
Extension& extension = s_extension[ii];
|
||||
if (!extension.m_supported
|
||||
&& extension.m_initialize)
|
||||
{
|
||||
const char* ext = _name;
|
||||
if (0 == strncmp(ext, "GL_", 3) ) // skip GL_
|
||||
{
|
||||
ext += 3;
|
||||
}
|
||||
|
||||
if (0 == strcmp(ext, extension.m_name) )
|
||||
{
|
||||
extension.m_supported = true;
|
||||
supported = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BX_TRACE("GL_EXTENSION %3d%s: %s", index, supported ? " (supported)" : "", _name);
|
||||
BX_UNUSED(supported);
|
||||
}
|
||||
|
||||
struct RendererContextGL : public RendererContextI
|
||||
{
|
||||
RendererContextGL()
|
||||
@@ -1365,42 +1393,31 @@ namespace bgfx { namespace gl
|
||||
strncpy(name, pos, len);
|
||||
name[len] = '\0';
|
||||
|
||||
bool supported = false;
|
||||
for (uint32_t ii = 0; ii < Extension::Count; ++ii)
|
||||
{
|
||||
Extension& extension = s_extension[ii];
|
||||
if (!extension.m_supported
|
||||
&& extension.m_initialize)
|
||||
{
|
||||
const char* ext = name;
|
||||
if (0 == strncmp(ext, "GL_", 3) ) // skip GL_
|
||||
{
|
||||
ext += 3;
|
||||
}
|
||||
|
||||
if (0 == strcmp(ext, extension.m_name) )
|
||||
{
|
||||
extension.m_supported = true;
|
||||
supported = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BX_TRACE("GL_EXTENSION %3d%s: %s", index, supported ? " (supported)" : "", name);
|
||||
BX_UNUSED(supported);
|
||||
updateExtension(name);
|
||||
|
||||
pos += len+1;
|
||||
++index;
|
||||
}
|
||||
}
|
||||
else if (NULL != glGetStringi)
|
||||
{
|
||||
GLint numExtensions = 0;
|
||||
glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions);
|
||||
glGetError(); // ignore error if glGetString returns NULL.
|
||||
|
||||
BX_TRACE("Supported extensions:");
|
||||
for (uint32_t ii = 0; ii < Extension::Count; ++ii)
|
||||
for (GLint index = 0; index < numExtensions; ++index)
|
||||
{
|
||||
if (s_extension[ii].m_supported)
|
||||
{
|
||||
BX_TRACE("\t%2d: %s", ii, s_extension[ii].m_name);
|
||||
}
|
||||
const char* name = (const char*)glGetStringi(GL_EXTENSIONS, index);
|
||||
updateExtension(name);
|
||||
}
|
||||
}
|
||||
|
||||
BX_TRACE("Supported extensions:");
|
||||
for (uint32_t ii = 0; ii < Extension::Count; ++ii)
|
||||
{
|
||||
if (s_extension[ii].m_supported)
|
||||
{
|
||||
BX_TRACE("\t%2d: %s", ii, s_extension[ii].m_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user