diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index ef9a0095c..f26acf5e0 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -2947,6 +2947,7 @@ namespace bgfx { namespace gl if (m_vaoSupport) { GL_CHECK(glGenVertexArrays(1, &m_vao) ); + GL_CHECK(glBindVertexArray(m_vao) ); } m_samplerObjectSupport = false @@ -3659,13 +3660,9 @@ namespace bgfx { namespace gl void submitBlit(BlitState& _bs, uint16_t _view); void submit(Frame* _render, ClearQuad& _clearQuad, TextVideoMemBlitter& _textVideoMemBlitter) override; + void blitSetup(TextVideoMemBlitter& _blitter) override { - if (0 != m_vao) - { - GL_CHECK(glBindVertexArray(m_vao) ); - } - uint32_t width = m_resolution.width; uint32_t height = m_resolution.height; @@ -3842,6 +3839,13 @@ namespace bgfx { namespace gl } } + if (0 != m_vao) + { + GL_CHECK(glDeleteVertexArrays(1, &m_vao) ); + GL_CHECK(glGenVertexArrays(1, &m_vao) ); + GL_CHECK(glBindVertexArray(m_vao) ); + } + if (m_srgbWriteControlSupport) { if (0 == m_currentFbo) @@ -4543,10 +4547,9 @@ namespace bgfx { namespace gl } else { - const GLuint defaultVao = m_vao; - if (0 != defaultVao) + if (0 != m_vao) { - GL_CHECK(glBindVertexArray(defaultVao) ); + GL_CHECK(glBindVertexArray(m_vao) ); } GL_CHECK(glDisable(GL_SCISSOR_TEST) ); @@ -7456,19 +7459,9 @@ namespace bgfx { namespace gl BGFX_GL_PROFILER_BEGIN_LITERAL("rendererSubmit", kColorView); - if (1 < m_numWindows - && m_vaoSupport) + if (0 != m_vao) { - m_vaoSupport = false; - GL_CHECK(glBindVertexArray(0) ); - GL_CHECK(glDeleteVertexArrays(1, &m_vao) ); - m_vao = 0; - } - - const GLuint defaultVao = m_vao; - if (0 != defaultVao) - { - GL_CHECK(glBindVertexArray(defaultVao) ); + GL_CHECK(glBindVertexArray(m_vao) ); } GL_CHECK(glBindFramebuffer(GL_FRAMEBUFFER, m_backBufferFbo) ); @@ -8556,11 +8549,6 @@ namespace bgfx { namespace gl blitMsaaFbo(); - if (m_vaoSupport) - { - GL_CHECK(glBindVertexArray(m_vao) ); - } - if (0 < _render->m_numRenderItems) { if (0 != (m_resolution.reset & BGFX_RESET_FLUSH_AFTER_RENDER) ) @@ -8818,6 +8806,11 @@ namespace bgfx { namespace gl BGFX_GL_PROFILER_END(); } + + if (0 != m_vao) + { + GL_CHECK(glBindVertexArray(0) ); + } } } } // namespace bgfx