From 76622f65aa88b7b9015a3b1d28f4a3027f4cd491 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 23 Sep 2019 20:48:07 +0100 Subject: [PATCH] Update index buffer binding when VAO changes --- .../driver/gl/wrappers/gl_buffer_funcs.cpp | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp index f1086d5ec..1c6d518a3 100644 --- a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp @@ -4333,14 +4333,24 @@ void WrappedOpenGL::glBindVertexArray(GLuint array) if(IsCaptureMode(m_State)) { + ContextData &cd = GetCtxData(); + if(array == 0) { - GetCtxData().m_VertexArrayRecord = record = NULL; + cd.m_VertexArrayRecord = record = NULL; + + cd.m_BufferRecord[BufferIdx(eGL_ELEMENT_ARRAY_BUFFER)] = NULL; } else { - GetCtxData().m_VertexArrayRecord = record = + cd.m_VertexArrayRecord = record = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), array)); + + GLuint buffer = 0; + GL.glGetIntegerv(eGL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint *)&buffer); + + cd.m_BufferRecord[BufferIdx(eGL_ELEMENT_ARRAY_BUFFER)] = + GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer)); } } @@ -4401,6 +4411,13 @@ void WrappedOpenGL::glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer) GLResourceRecord *bufrecord = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer)); + ContextData &cd = GetCtxData(); + + if(cd.m_VertexArrayRecord == varecord) + { + cd.m_BufferRecord[BufferIdx(eGL_ELEMENT_ARRAY_BUFFER)] = bufrecord; + } + GLResourceRecord *r = IsActiveCapturing(m_State) ? GetContextRecord() : varecord; if(r)