From e4e8d3e4018edbbe6812fe5c58907c23cfa5e713 Mon Sep 17 00:00:00 2001 From: David Rose Date: Tue, 2 Jun 2009 19:37:20 +0000 Subject: [PATCH] fix for new ShaderGenerator stuff --- panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx b/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx index c9fcdade8a..6f7a609f3b 100755 --- a/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx +++ b/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx @@ -62,6 +62,7 @@ #include "pStatCollector.h" #include "wdxGraphicsBuffer9.h" #include "config_pgraph.h" +#include "shaderGenerator.h" #ifdef HAVE_CG #include "Cg/cgD3D9.h" #endif @@ -3247,7 +3248,14 @@ set_state_and_transform(const RenderState *target, _target_shader = DCAST(ShaderAttrib, _target_rs->get_attrib_def(ShaderAttrib::get_class_slot())); if (_target_shader->auto_shader()) { - _target_shader = _target_rs->get_generated_shader(); + // If we don't have a generated shader, make sure we have a ShaderGenerator, then generate the shader. + if (_target_rs->_generated_shader == NULL) { + if (_shader_generator == NULL) { + _shader_generator = new ShaderGenerator(this, _scene_setup->get_display_region()->get_window()); + } + const_cast(_target_rs.p())->_generated_shader = DCAST(ShaderAttrib, _shader_generator->synthesize_shader(_target_rs)); + } + _target_shader = DCAST(ShaderAttrib, _target_rs->_generated_shader); } int alpha_test_slot = AlphaTestAttrib::get_class_slot();