WineD3D: ScissorRect correction
Stefan Dösinger
stefan at codeweavers.com
Mon Nov 6 07:28:15 CST 2006
Corrected version of my earlier patch,it uses GetClientRect to find out the
window size, and the gl y position is calculated with height - bottom instead
of bottom - height now.
-------------- next part --------------
From bf9762425fd92508fb2ec59ff49dbb4fdf6c6c7c Mon Sep 17 00:00:00 2001
From: Stefan Doesinger <stefan at codeweavers.com>
Date: Mon, 6 Nov 2006 14:25:30 +0100
Subject: [PATCH] WineD3D: ScissorRect corrections
---
dlls/wined3d/device.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 59398b3..64a8991 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4650,11 +4650,19 @@ static HRESULT WINAPI IWineD3DDeviceImpl
static HRESULT WINAPI IWineD3DDeviceImpl_SetScissorRect(IWineD3DDevice *iface, CONST RECT* pRect) {
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
- ENTER_GL();
+ RECT windowRect;
+ UINT winHeight;
- /** FIXME: Windows uses a top,left origin openGL uses a bottom Right? **/
- TRACE("(%p)Setting new Scissor Rect to %d:%d-%d:%d\n", This, pRect->left, pRect->top, pRect->right, pRect->bottom);
- glScissor(pRect->left, pRect->top, pRect->right - pRect->left, pRect->bottom - pRect->top);
+ GetClientRect(((IWineD3DSwapChainImpl *)This->swapchains[0])->win_handle, &windowRect);
+ /* Warning: glScissor uses window coordinates, not viewport coordinates, so our viewport correction does not apply
+ * Warning2: Even in windowed mode the coords are relative to the window, not the screen
+ */
+ winHeight = windowRect.bottom - windowRect.top;
+ TRACE("(%p)Setting new Scissor Rect to %d:%d-%d:%d\n", This, pRect->left, pRect->bottom - winHeight,
+ pRect->right - pRect->left, pRect->bottom - pRect->top);
+ ENTER_GL();
+ glScissor(pRect->left, winHeight - pRect->bottom, pRect->right - pRect->left, pRect->bottom - pRect->top);
+ checkGLcall("glScissor");
LEAVE_GL();
return WINED3D_OK;
--
1.4.1.1
More information about the wine-patches
mailing list