diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 4c39823b1..cc2075b93 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -1412,6 +1412,16 @@ namespace bgfx { namespace gl { "Intel", BGFX_PCI_ID_INTEL }, }; + struct Workaround + { + void reset() + { + m_detachShader = true; + } + + bool m_detachShader; + }; + struct RendererContextGL : public RendererContextI { RendererContextGL() @@ -1482,6 +1492,8 @@ namespace bgfx { namespace gl } } + m_workaround.reset(); + GLint numCmpFormats = 0; GL_CHECK(glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCmpFormats) ); BX_TRACE("GL_NUM_COMPRESSED_TEXTURE_FORMATS %d", numCmpFormats); @@ -3520,6 +3532,8 @@ namespace bgfx { namespace gl const char* m_version; const char* m_glslVersion; + Workaround m_workaround; + GLuint m_currentFbo; VR m_ovr; @@ -4018,7 +4032,8 @@ namespace bgfx { namespace gl init(); - if (!cached) + if (!cached + && s_renderGL->m_workaround.m_detachShader) { // Must be after init, otherwise init might fail to lookup shader // info (NVIDIA Tegra 3 OpenGL ES 2.0 14.01003).