From b77a3c3effbf9721695ce0b9de803375683c2629 Mon Sep 17 00:00:00 2001 From: Nicolas Guillemot Date: Sat, 10 Sep 2016 18:24:11 -0700 Subject: [PATCH] handle NULL buffers in glBindVertexBuffers based on glBindTextures --- renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp index 3d4a8b930..f4580d5a8 100644 --- a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp @@ -4064,9 +4064,12 @@ bool WrappedOpenGL::Serialise_glVertexArrayVertexBuffers(GLuint vaobj, GLuint fi for(int32_t i = 0; i < Count; i++) { - SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(BufferRes(GetCtx(), buffers[i]))); - SERIALISE_ELEMENT(uint64_t, offset, (uint64_t)offsets[i]); - SERIALISE_ELEMENT(uint64_t, stride, (uint64_t)strides[i]); + SERIALISE_ELEMENT(ResourceId, id, + buffers && buffers[i] + ? GetResourceManager()->GetID(BufferRes(GetCtx(), buffers[i])) + : ResourceId()); + SERIALISE_ELEMENT(uint64_t, offset, buffers ? 0 : (uint64_t)offsets[i]); + SERIALISE_ELEMENT(uint64_t, stride, buffers ? 0 : (uint64_t)strides[i]); if(m_State <= EXECUTING) { @@ -4138,7 +4141,7 @@ void WrappedOpenGL::glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsiz { for(GLsizei i = 0; i < count; i++) { - if(buffers[i] != 0) + if(buffers != NULL && buffers[i] != 0) { GLResourceRecord *bufrecord = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffers[i])); @@ -4182,7 +4185,7 @@ void WrappedOpenGL::glBindVertexBuffers(GLuint first, GLsizei count, const GLuin { for(GLsizei i = 0; i < count; i++) { - if(buffers[i] != 0) + if(buffers != NULL && buffers[i] != 0) { GLResourceRecord *bufrecord = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffers[i]));