mirror of
https://github.com/reactos/wine.git
synced 2024-11-29 22:50:43 +00:00
wined3d: Flip the scissor rect when rendering offscreen.
This commit is contained in:
parent
4194d784f8
commit
b4e596e70e
@ -700,6 +700,7 @@ static inline WineD3DContext *FindContext(IWineD3DDeviceImpl *This, IWineD3DSurf
|
||||
Context_MarkStateDirty(context, WINED3DTS_PROJECTION);
|
||||
Context_MarkStateDirty(context, STATE_VDECL);
|
||||
Context_MarkStateDirty(context, STATE_VIEWPORT);
|
||||
Context_MarkStateDirty(context, STATE_SCISSORRECT);
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -787,6 +788,7 @@ static inline WineD3DContext *FindContext(IWineD3DDeviceImpl *This, IWineD3DSurf
|
||||
Context_MarkStateDirty(context, WINED3DTS_PROJECTION);
|
||||
Context_MarkStateDirty(context, STATE_VDECL);
|
||||
Context_MarkStateDirty(context, STATE_VIEWPORT);
|
||||
Context_MarkStateDirty(context, STATE_SCISSORRECT);
|
||||
}
|
||||
}
|
||||
if (readTexture) {
|
||||
|
@ -4509,11 +4509,18 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Clear(IWineD3DDevice *iface, DWORD Coun
|
||||
if (!curRect) {
|
||||
/* In drawable flag is set below */
|
||||
|
||||
glScissor(This->stateBlock->viewport.X,
|
||||
(((IWineD3DSurfaceImpl *)This->render_targets[0])->currentDesc.Height -
|
||||
(This->stateBlock->viewport.Y + This->stateBlock->viewport.Height)),
|
||||
This->stateBlock->viewport.Width,
|
||||
This->stateBlock->viewport.Height);
|
||||
if (This->render_offscreen) {
|
||||
glScissor(This->stateBlock->viewport.X,
|
||||
This->stateBlock->viewport.Y,
|
||||
This->stateBlock->viewport.Width,
|
||||
This->stateBlock->viewport.Height);
|
||||
} else {
|
||||
glScissor(This->stateBlock->viewport.X,
|
||||
(((IWineD3DSurfaceImpl *)This->render_targets[0])->currentDesc.Height -
|
||||
(This->stateBlock->viewport.Y + This->stateBlock->viewport.Height)),
|
||||
This->stateBlock->viewport.Width,
|
||||
This->stateBlock->viewport.Height);
|
||||
}
|
||||
checkGLcall("glScissor");
|
||||
glClear(glMask);
|
||||
checkGLcall("glClear");
|
||||
|
@ -3442,7 +3442,12 @@ static void scissorrect(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3D
|
||||
winHeight = windowRect.bottom - windowRect.top;
|
||||
TRACE("(%p) Setting new Scissor Rect to %d:%d-%d:%d\n", stateblock->wineD3DDevice, pRect->left, pRect->bottom - winHeight,
|
||||
pRect->right - pRect->left, pRect->bottom - pRect->top);
|
||||
glScissor(pRect->left, winHeight - pRect->bottom, pRect->right - pRect->left, pRect->bottom - pRect->top);
|
||||
|
||||
if (stateblock->wineD3DDevice->render_offscreen) {
|
||||
glScissor(pRect->left, pRect->top, pRect->right - pRect->left, pRect->bottom - pRect->top);
|
||||
} else {
|
||||
glScissor(pRect->left, winHeight - pRect->bottom, pRect->right - pRect->left, pRect->bottom - pRect->top);
|
||||
}
|
||||
checkGLcall("glScissor");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user