From c9c680a50fb65c0ceccfc91de866eb252e23b6e5 Mon Sep 17 00:00:00 2001 From: Josh Yelon Date: Sun, 4 Sep 2005 22:56:04 +0000 Subject: [PATCH] More shader fixes --- panda/src/glstuff/glGraphicsStateGuardian_src.cxx | 11 +++++++++++ panda/src/pgraph/shaderAttrib.I | 5 ++--- panda/src/pgraph/shaderAttrib.h | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) 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);