diff --git a/panda/src/dxgsg8/dxGraphicsStateGuardian8.I b/panda/src/dxgsg8/dxGraphicsStateGuardian8.I index 26df09063b..9553cd9fd5 100644 --- a/panda/src/dxgsg8/dxGraphicsStateGuardian8.I +++ b/panda/src/dxgsg8/dxGraphicsStateGuardian8.I @@ -149,7 +149,7 @@ enable_blend(bool val) { } //////////////////////////////////////////////////////////////////// -// Function: DXGraphicsStateGuardian::enable_blend +// Function: DXGraphicsStateGuardian::set_color_writemask // Access: // Description: //////////////////////////////////////////////////////////////////// diff --git a/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx b/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx index 152f717b82..2c6df99dd2 100644 --- a/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx +++ b/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx @@ -4369,6 +4369,12 @@ enable_light(int light_id, bool enable) { #endif } +void DXGraphicsStateGuardian:: +issue_color_write(const ColorWriteAttrib *attrib) { + _color_write_mode = attrib->get_mode(); + set_color_writemask((_color_write_mode ==ColorWriteAttrib::M_on) ? 0xFFFFFFFF : 0x0); +} + //////////////////////////////////////////////////////////////////// // Function: DXGraphicsStateGuardian::set_blend_mode // Access: Protected, Virtual @@ -4381,12 +4387,16 @@ void DXGraphicsStateGuardian:: set_blend_mode(ColorWriteAttrib::Mode color_write_mode, ColorBlendAttrib::Mode color_blend_mode, TransparencyAttrib::Mode transparency_mode) { - // If color_write_mode is off, we disable writing to the colorbuffer. - if (color_write_mode == ColorWriteAttrib::M_off) { + + // should never get here, since our dxgsg8 issue_color_write() should be called instead + nassertv(color_write_mode == _color_write_mode); +#if 0 + if(color_write_mode == ColorWriteAttrib::M_off) { enable_alpha_test(false); set_color_writemask(0x0); return; } +#endif // Is there a color blend set? switch (color_blend_mode) { diff --git a/panda/src/dxgsg8/dxGraphicsStateGuardian8.h b/panda/src/dxgsg8/dxGraphicsStateGuardian8.h index cd644525fa..88cd4a8884 100644 --- a/panda/src/dxgsg8/dxGraphicsStateGuardian8.h +++ b/panda/src/dxgsg8/dxGraphicsStateGuardian8.h @@ -126,6 +126,7 @@ public: virtual void issue_alpha_test(const AlphaTestAttrib *attrib); virtual void issue_depth_test(const DepthTestAttrib *attrib); virtual void issue_depth_write(const DepthWriteAttrib *attrib); + virtual void issue_color_write(const ColorWriteAttrib *attrib); virtual void issue_cull_face(const CullFaceAttrib *attrib); virtual void issue_fog(const FogAttrib *attrib); virtual void issue_depth_offset(const DepthOffsetAttrib *attrib);