From e92d993ceac7d8d6119ecfe49cb07c5c3da771d9 Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 14 Nov 2022 10:25:09 +0100 Subject: [PATCH] glgsg: Fix failure to unset divisor after rendering w/ instancing This would normally be done by `disable_shader_vertex_arrays()` but it apparently isn't called between shader changes --- panda/src/glstuff/glCgShaderContext_src.cxx | 8 +++----- panda/src/glstuff/glShaderContext_src.cxx | 4 +--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/panda/src/glstuff/glCgShaderContext_src.cxx b/panda/src/glstuff/glCgShaderContext_src.cxx index c0a3b7d284..4a71b074c6 100644 --- a/panda/src/glstuff/glCgShaderContext_src.cxx +++ b/panda/src/glstuff/glCgShaderContext_src.cxx @@ -905,11 +905,9 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) { stride, client_pointer); } - if (divisor > 0) { - _glgsg->set_vertex_attrib_divisor(p, divisor); - } - - } else { + _glgsg->set_vertex_attrib_divisor(p, divisor); + } + else { // It's a conventional vertex attribute. Ugh. #ifdef SUPPORT_FIXED_FUNCTION switch (p) { diff --git a/panda/src/glstuff/glShaderContext_src.cxx b/panda/src/glstuff/glShaderContext_src.cxx index aad4305b20..79db239f35 100644 --- a/panda/src/glstuff/glShaderContext_src.cxx +++ b/panda/src/glstuff/glShaderContext_src.cxx @@ -2568,9 +2568,7 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) { stride, client_pointer); } - if (divisor > 0) { - _glgsg->set_vertex_attrib_divisor(p, divisor); - } + _glgsg->set_vertex_attrib_divisor(p, divisor); ++p; client_pointer += element_stride;