[1/2] wined3d: Make sure the color buffer is not modified by
depth_blt()
H. Verbeet
hverbeet at gmail.com
Tue Jun 5 11:52:15 CDT 2007
The depth blitting shader doesn't write to the color buffer, but if
the contents of the color buffer have 0 in the alpha channel the rgb
data is lost. This patch uses glBlendFunc() to always explicitly use
the destination color data. This fixes bug 8016 (but not 7990...)
Changelog:
- Make sure the color buffer is not modified by depth_blt()
-------------- next part --------------
---
dlls/wined3d/drawprim.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 6901145..bfe9030 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -760,15 +760,16 @@ static void depth_blt(IWineD3DDevice *iface, GLuint texture) {
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
GLint old_binding = 0;
- glPushAttrib(GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT);
+ glPushAttrib(GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glDisable(GL_CULL_FACE);
- glDisable(GL_BLEND);
+ glEnable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
glDisable(GL_SCISSOR_TEST);
glDisable(GL_STENCIL_TEST);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_ALWAYS);
+ glBlendFunc(GL_ZERO, GL_ONE);
GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB));
glGetIntegerv(GL_TEXTURE_BINDING_2D, &old_binding);
More information about the wine-patches
mailing list