use colorwritemask better

This commit is contained in:
cxgeorge 2002-05-15 00:03:41 +00:00
parent 8f881bfd50
commit 0dad155cf8
3 changed files with 14 additions and 3 deletions

View File

@ -149,7 +149,7 @@ enable_blend(bool val) {
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: DXGraphicsStateGuardian::enable_blend // Function: DXGraphicsStateGuardian::set_color_writemask
// Access: // Access:
// Description: // Description:
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////

View File

@ -4369,6 +4369,12 @@ enable_light(int light_id, bool enable) {
#endif #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 // Function: DXGraphicsStateGuardian::set_blend_mode
// Access: Protected, Virtual // Access: Protected, Virtual
@ -4381,12 +4387,16 @@ void DXGraphicsStateGuardian::
set_blend_mode(ColorWriteAttrib::Mode color_write_mode, set_blend_mode(ColorWriteAttrib::Mode color_write_mode,
ColorBlendAttrib::Mode color_blend_mode, ColorBlendAttrib::Mode color_blend_mode,
TransparencyAttrib::Mode transparency_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); enable_alpha_test(false);
set_color_writemask(0x0); set_color_writemask(0x0);
return; return;
} }
#endif
// Is there a color blend set? // Is there a color blend set?
switch (color_blend_mode) { switch (color_blend_mode) {

View File

@ -126,6 +126,7 @@ public:
virtual void issue_alpha_test(const AlphaTestAttrib *attrib); virtual void issue_alpha_test(const AlphaTestAttrib *attrib);
virtual void issue_depth_test(const DepthTestAttrib *attrib); virtual void issue_depth_test(const DepthTestAttrib *attrib);
virtual void issue_depth_write(const DepthWriteAttrib *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_cull_face(const CullFaceAttrib *attrib);
virtual void issue_fog(const FogAttrib *attrib); virtual void issue_fog(const FogAttrib *attrib);
virtual void issue_depth_offset(const DepthOffsetAttrib *attrib); virtual void issue_depth_offset(const DepthOffsetAttrib *attrib);