mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-20 22:03:12 +01:00
Fixing WebGL + Android instancing.
This commit is contained in:
@@ -626,6 +626,8 @@ namespace bgfx { namespace gl
|
||||
NV_conservative_raster,
|
||||
NV_copy_image,
|
||||
NV_draw_buffers,
|
||||
NV_draw_instanced,
|
||||
NV_instanced_arrays,
|
||||
NV_occlusion_query,
|
||||
NV_texture_border_clamp,
|
||||
NVX_gpu_memory_info,
|
||||
@@ -841,6 +843,8 @@ namespace bgfx { namespace gl
|
||||
{ "NV_conservative_raster", false, true },
|
||||
{ "NV_copy_image", false, true },
|
||||
{ "NV_draw_buffers", false, true }, // GLES2 extension.
|
||||
{ "NV_draw_instanced", false, true }, // GLES2 extension.
|
||||
{ "NV_instanced_arrays", false, true }, // GLES2 extension.
|
||||
{ "NV_occlusion_query", false, true },
|
||||
{ "NV_texture_border_clamp", false, true }, // GLES2 extension.
|
||||
{ "NVX_gpu_memory_info", false, true },
|
||||
@@ -2223,17 +2227,20 @@ namespace bgfx { namespace gl
|
||||
int glVersion;
|
||||
int majorGlVersion = 0;
|
||||
int minorGlVersion = 0;
|
||||
const char *version = m_version;
|
||||
const char* version = m_version;
|
||||
|
||||
while(*version && (*version < '0' || *version > '9') )
|
||||
while (*version && !bx::isNumeric(*version) )
|
||||
{
|
||||
++version;
|
||||
}
|
||||
|
||||
majorGlVersion = atoi(version);
|
||||
minorGlVersion = atoi(version + 2);
|
||||
bx::fromString(&majorGlVersion, version);
|
||||
bx::fromString(&minorGlVersion, version + 2);
|
||||
|
||||
glVersion = majorGlVersion*10 + minorGlVersion;
|
||||
|
||||
BX_TRACE("Parsed version %d (%d.%d).", glVersion, majorGlVersion, minorGlVersion);
|
||||
|
||||
for (uint32_t ii = 0; ii < BX_COUNTOF(s_vendorIds); ++ii)
|
||||
{
|
||||
const VendorId& vendorId = s_vendorIds[ii];
|
||||
@@ -2967,15 +2974,18 @@ namespace bgfx { namespace gl
|
||||
m_readPixelsFmt = GL_RGBA;
|
||||
}
|
||||
|
||||
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
|
||||
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30)
|
||||
|| (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES) && glVersion >= 30) )
|
||||
{
|
||||
g_caps.supported |= BGFX_CAPS_INSTANCING;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s_extension[Extension::ANGLE_instanced_arrays].m_supported
|
||||
|| s_extension[Extension::ARB_instanced_arrays].m_supported
|
||||
|| s_extension[Extension::EXT_instanced_arrays].m_supported)
|
||||
|| s_extension[Extension:: ARB_instanced_arrays].m_supported
|
||||
|| s_extension[Extension:: EXT_instanced_arrays].m_supported
|
||||
|| (s_extension[Extension:: NV_instanced_arrays].m_supported && s_extension[Extension::NV_draw_instanced].m_supported)
|
||||
)
|
||||
{
|
||||
if (NULL != glVertexAttribDivisor
|
||||
&& NULL != glDrawArraysInstanced
|
||||
@@ -2983,6 +2993,16 @@ namespace bgfx { namespace gl
|
||||
{
|
||||
g_caps.supported |= BGFX_CAPS_INSTANCING;
|
||||
}
|
||||
else if (NULL != glVertexAttribDivisorNV
|
||||
&& NULL != glDrawArraysInstancedNV
|
||||
&& NULL != glDrawElementsInstancedNV)
|
||||
{
|
||||
glVertexAttribDivisor = glVertexAttribDivisorNV;
|
||||
glDrawArraysInstanced = glDrawArraysInstancedNV;
|
||||
glDrawElementsInstanced = glDrawElementsInstancedNV;
|
||||
|
||||
g_caps.supported |= BGFX_CAPS_INSTANCING;
|
||||
}
|
||||
}
|
||||
|
||||
if (0 == (g_caps.supported & BGFX_CAPS_INSTANCING) )
|
||||
|
||||
Reference in New Issue
Block a user