mirror of
https://github.com/reactos/wine.git
synced 2025-02-25 23:35:31 +00:00
Supply the correct box on the screen to be processed during the clear
call, using opengl coordinates, not directx coordinates.
This commit is contained in:
parent
c963e25c0e
commit
575dbfa769
@ -2088,23 +2088,25 @@ HRESULT WINAPI IDirect3DDevice8Impl_Clear(LPDIRECT3DDEVICE8 iface, DWORD Count
|
|||||||
/* Note gl uses lower left, width/height */
|
/* Note gl uses lower left, width/height */
|
||||||
TRACE("(%p) %p Rect=(%ld,%ld)->(%ld,%ld) glRect=(%ld,%ld), len=%ld, hei=%ld\n", This, curRect,
|
TRACE("(%p) %p Rect=(%ld,%ld)->(%ld,%ld) glRect=(%ld,%ld), len=%ld, hei=%ld\n", This, curRect,
|
||||||
curRect->x1, curRect->y1, curRect->x2, curRect->y2,
|
curRect->x1, curRect->y1, curRect->x2, curRect->y2,
|
||||||
curRect->x1, curRect->y2, curRect->x2 - curRect->x1, curRect->y2 - curRect->y1);
|
curRect->x1, (This->PresentParms.BackBufferHeight - curRect->y2),
|
||||||
glScissor(curRect->x1, curRect->y2, curRect->x2 - curRect->x1, curRect->y2 - curRect->y1);
|
curRect->x2 - curRect->x1, curRect->y2 - curRect->y1);
|
||||||
|
glScissor(curRect->x1, (This->PresentParms.BackBufferHeight - curRect->y2),
|
||||||
|
curRect->x2 - curRect->x1, curRect->y2 - curRect->y1);
|
||||||
checkGLcall("glScissor");
|
checkGLcall("glScissor");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear the whole screen */
|
/* Clear the whole screen */
|
||||||
if (Flags & D3DCLEAR_STENCIL) {
|
if (Flags & D3DCLEAR_STENCIL) {
|
||||||
glGetIntegerv(GL_STENCIL_CLEAR_VALUE, &old_stencil_clear_value);
|
glGetIntegerv(GL_STENCIL_CLEAR_VALUE, &old_stencil_clear_value);
|
||||||
glClearStencil(Stencil);
|
glClearStencil(Stencil);
|
||||||
checkGLcall("glClearStencil");
|
checkGLcall("glClearStencil");
|
||||||
glMask = glMask | GL_STENCIL_BUFFER_BIT;
|
glMask = glMask | GL_STENCIL_BUFFER_BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Flags & D3DCLEAR_ZBUFFER) {
|
if (Flags & D3DCLEAR_ZBUFFER) {
|
||||||
glGetBooleanv(GL_DEPTH_WRITEMASK, &old_ztest);
|
glGetBooleanv(GL_DEPTH_WRITEMASK, &old_ztest);
|
||||||
glDepthMask(GL_TRUE);
|
glDepthMask(GL_TRUE);
|
||||||
glGetFloatv(GL_DEPTH_CLEAR_VALUE, &old_z_clear_value);
|
glGetFloatv(GL_DEPTH_CLEAR_VALUE, &old_z_clear_value);
|
||||||
glClearDepth(Z);
|
glClearDepth(Z);
|
||||||
checkGLcall("glClearDepth");
|
checkGLcall("glClearDepth");
|
||||||
glMask = glMask | GL_DEPTH_BUFFER_BIT;
|
glMask = glMask | GL_DEPTH_BUFFER_BIT;
|
||||||
@ -2112,7 +2114,7 @@ HRESULT WINAPI IDirect3DDevice8Impl_Clear(LPDIRECT3DDEVICE8 iface, DWORD Count
|
|||||||
|
|
||||||
if (Flags & D3DCLEAR_TARGET) {
|
if (Flags & D3DCLEAR_TARGET) {
|
||||||
TRACE("Clearing screen with glClear to color %lx\n", Color);
|
TRACE("Clearing screen with glClear to color %lx\n", Color);
|
||||||
glGetFloatv(GL_COLOR_CLEAR_VALUE, old_color_clear_value);
|
glGetFloatv(GL_COLOR_CLEAR_VALUE, old_color_clear_value);
|
||||||
glClearColor(((Color >> 16) & 0xFF) / 255.0,
|
glClearColor(((Color >> 16) & 0xFF) / 255.0,
|
||||||
((Color >> 8) & 0xFF) / 255.0,
|
((Color >> 8) & 0xFF) / 255.0,
|
||||||
((Color >> 0) & 0xFF) / 255.0,
|
((Color >> 0) & 0xFF) / 255.0,
|
||||||
@ -2124,19 +2126,19 @@ HRESULT WINAPI IDirect3DDevice8Impl_Clear(LPDIRECT3DDEVICE8 iface, DWORD Count
|
|||||||
glClear(glMask);
|
glClear(glMask);
|
||||||
checkGLcall("glClear");
|
checkGLcall("glClear");
|
||||||
|
|
||||||
if (Flags & D3DCLEAR_STENCIL) {
|
if (Flags & D3DCLEAR_STENCIL) {
|
||||||
glClearStencil(old_stencil_clear_value);
|
glClearStencil(old_stencil_clear_value);
|
||||||
}
|
}
|
||||||
if (Flags & D3DCLEAR_ZBUFFER) {
|
if (Flags & D3DCLEAR_ZBUFFER) {
|
||||||
glDepthMask(old_ztest);
|
glDepthMask(old_ztest);
|
||||||
glClearDepth(old_z_clear_value);
|
glClearDepth(old_z_clear_value);
|
||||||
}
|
}
|
||||||
if (Flags & D3DCLEAR_TARGET) {
|
if (Flags & D3DCLEAR_TARGET) {
|
||||||
glClearColor(old_color_clear_value[0],
|
glClearColor(old_color_clear_value[0],
|
||||||
old_color_clear_value[1],
|
old_color_clear_value[1],
|
||||||
old_color_clear_value[2],
|
old_color_clear_value[2],
|
||||||
old_color_clear_value[3]);
|
old_color_clear_value[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (curRect) curRect = curRect + sizeof(D3DRECT);
|
if (curRect) curRect = curRect + sizeof(D3DRECT);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user