From ef65d2a6a667fd61d131dd732a281a4ae6b3a702 Mon Sep 17 00:00:00 2001 From: Jason Edmeades Date: Fri, 31 Oct 2003 00:09:07 +0000 Subject: [PATCH] ColorWriteEnable should not impact clearing the screen. --- dlls/d3d8/device.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index 262ebbf74dc..72b754112b6 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -1382,6 +1382,9 @@ HRESULT WINAPI IDirect3DDevice8Impl_Clear(LPDIRECT3DDEVICE8 iface, DWORD Count ((Color >> 0) & 0xFF) / 255.0f, ((Color >> 24) & 0xFF) / 255.0f); checkGLcall("glClearColor"); + + /* Clear ALL colors! */ + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glMask = glMask | GL_COLOR_BUFFER_BIT; } @@ -1426,6 +1429,10 @@ HRESULT WINAPI IDirect3DDevice8Impl_Clear(LPDIRECT3DDEVICE8 iface, DWORD Count old_color_clear_value[1], old_color_clear_value[2], old_color_clear_value[3]); + glColorMask(This->StateBlock->renderstate[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_RED ? GL_TRUE : GL_FALSE, + This->StateBlock->renderstate[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE, + This->StateBlock->renderstate[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_BLUE ? GL_TRUE : GL_FALSE, + This->StateBlock->renderstate[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE); } glDisable(GL_SCISSOR_TEST); @@ -2897,10 +2904,10 @@ HRESULT WINAPI IDirect3DDevice8Impl_SetRenderState(LPDIRECT3DDEVICE8 iface, D3 Value & D3DCOLORWRITEENABLE_GREEN ? 1 : 0, Value & D3DCOLORWRITEENABLE_BLUE ? 1 : 0, Value & D3DCOLORWRITEENABLE_ALPHA ? 1 : 0); - glColorMask(Value & D3DCOLORWRITEENABLE_RED, - Value & D3DCOLORWRITEENABLE_GREEN, - Value & D3DCOLORWRITEENABLE_BLUE, - Value & D3DCOLORWRITEENABLE_ALPHA); + glColorMask(Value & D3DCOLORWRITEENABLE_RED ? GL_TRUE : GL_FALSE, + Value & D3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE, + Value & D3DCOLORWRITEENABLE_BLUE ? GL_TRUE : GL_FALSE, + Value & D3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE); checkGLcall("glColorMask(...)"); break; -- 2.11.4.GIT