diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index 5a8c16001b..63ee8dcf4d 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -2588,6 +2588,15 @@ issue_shade_model(const ShadeModelAttrib *attrib) { void CLP(GraphicsStateGuardian):: issue_shader(const ShaderAttrib *attrib) { ShaderMode *mode = attrib->get_shader_mode(); + if (mode == 0) { + if (_shader_context != 0) { + _shader_context->unbind(); + _shader_context = 0; + _shader_mode = 0; + } + return; + } + Shader *shader = mode->get_shader(); CLP(ShaderContext) *context = (CLP(ShaderContext) *)(shader->prepare_now(get_prepared_objects(), this)); @@ -2602,9 +2611,11 @@ issue_shader(const ShaderAttrib *attrib) { context->bind(mode); _shader_context = context; } + _shader_mode = mode; } else { // Use the same shader as before, but with new input arguments. context->rebind(_shader_mode, mode); + _shader_mode = mode; } } diff --git a/panda/src/pgraph/shaderAttrib.I b/panda/src/pgraph/shaderAttrib.I index 10d9f5b3a7..04d9f4992a 100755 --- a/panda/src/pgraph/shaderAttrib.I +++ b/panda/src/pgraph/shaderAttrib.I @@ -20,11 +20,10 @@ //////////////////////////////////////////////////////////////////// // Function: ShaderAttrib::Constructor // Access: Private -// Description: Use ShaderAttrib::make() to construct a new -// ShaderAttrib object. +// Description: xyz //////////////////////////////////////////////////////////////////// INLINE ShaderAttrib:: -ShaderAttrib() { +ShaderAttrib(void) { } //////////////////////////////////////////////////////////////////// diff --git a/panda/src/pgraph/shaderAttrib.h b/panda/src/pgraph/shaderAttrib.h index 7553cfc8b8..cf787c69b1 100755 --- a/panda/src/pgraph/shaderAttrib.h +++ b/panda/src/pgraph/shaderAttrib.h @@ -39,7 +39,7 @@ class EXPCL_PANDA ShaderAttrib: public RenderAttrib { private: - INLINE ShaderAttrib(); + INLINE ShaderAttrib(void); PUBLISHED: static CPT(RenderAttrib) make(ShaderMode *sm);