From 74f936115e6475fbd6aa5c5e13247a4e467b16fd Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 1 May 2015 20:15:00 +0200 Subject: [PATCH] Force p3d_Vertex to attribute location 0 to fix disappearing geometry when an attribute is not bound --- panda/src/glstuff/glShaderContext_src.cxx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/panda/src/glstuff/glShaderContext_src.cxx b/panda/src/glstuff/glShaderContext_src.cxx index 3c031dc904..af09da5408 100644 --- a/panda/src/glstuff/glShaderContext_src.cxx +++ b/panda/src/glstuff/glShaderContext_src.cxx @@ -1974,6 +1974,17 @@ glsl_compile_and_link() { // glsl_report_shader_errors(*it); //} + // Under core OpenGL, we have to make sure that we bind something to + // attribute 0. Make sure that this is the position array. + _glgsg->_glBindAttribLocation(_glsl_program, 0, "p3d_Vertex"); + _glgsg->_glBindAttribLocation(_glsl_program, 0, "vertex"); + + // While we're at it, let's also map these to fixed locations. These + // attributes were historically fixed to these locations, so it might + // help a buggy driver. + _glgsg->_glBindAttribLocation(_glsl_program, 2, "p3d_Normal"); + _glgsg->_glBindAttribLocation(_glsl_program, 3, "p3d_Color"); + // If we requested to retrieve the shader, we should indicate that before linking. #if !defined(NDEBUG) && !defined(OPENGLES) if (gl_dump_compiled_shaders && _glgsg->_supports_get_program_binary) {