mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
use colorwritemask better
This commit is contained in:
parent
a31a99d91b
commit
7d20aff6f6
@ -157,7 +157,16 @@ INLINE void DXGraphicsStateGuardian::
|
|||||||
set_color_writemask(UINT color_writemask) {
|
set_color_writemask(UINT color_writemask) {
|
||||||
if (_color_writemask != color_writemask) {
|
if (_color_writemask != color_writemask) {
|
||||||
_color_writemask = color_writemask;
|
_color_writemask = color_writemask;
|
||||||
scrn.pD3DDevice->SetRenderState(D3DRS_COLORWRITEENABLE, (DWORD)color_writemask);
|
if(scrn.d3dcaps.PrimitiveMiscCaps & D3DPMISCCAPS_COLORWRITEENABLE) {
|
||||||
|
// only newer HW supports this rstate
|
||||||
|
scrn.pD3DDevice->SetRenderState(D3DRS_COLORWRITEENABLE, (DWORD)color_writemask);
|
||||||
|
} else {
|
||||||
|
assert((color_writemask==0x0)||(color_writemask==0xFFFFFFFF));
|
||||||
|
if(color_writemask==0x0) {
|
||||||
|
enable_blend(true);
|
||||||
|
call_dxBlendFunc(D3DBLEND_ZERO, D3DBLEND_ONE);
|
||||||
|
} else enable_blend(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4381,13 +4381,10 @@ 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 color using
|
// If color_write_mode is off, we disable writing to the colorbuffer.
|
||||||
// blending. I don't know if it is possible in DX to disable color
|
|
||||||
// outside of a blend mode.
|
|
||||||
if (color_write_mode == ColorWriteAttrib::M_off) {
|
if (color_write_mode == ColorWriteAttrib::M_off) {
|
||||||
enable_blend(true);
|
|
||||||
enable_alpha_test(false);
|
enable_alpha_test(false);
|
||||||
call_dxBlendFunc(D3DBLEND_ZERO, D3DBLEND_ONE);
|
set_color_writemask(0x0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user