H. Verbeet : wined3d: Rename renderUpsideDown to render_offscreen.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Nov 17 11:49:15 CST 2006
Module: wine
Branch: master
Commit: 9bf04ecd03c7abc33c46306ef64bfea0a0cc5efb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9bf04ecd03c7abc33c46306ef64bfea0a0cc5efb
Author: H. Verbeet <hverbeet at gmail.com>
Date: Fri Nov 17 13:23:41 2006 +0100
wined3d: Rename renderUpsideDown to render_offscreen.
---
dlls/wined3d/device.c | 19 ++++++++++---------
dlls/wined3d/drawprim.c | 10 +++++++---
dlls/wined3d/wined3d_private.h | 2 +-
3 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 9cf6f25..ab529a9 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3484,7 +3484,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
case WINED3DCULL_CW:
glEnable(GL_CULL_FACE);
checkGLcall("glEnable GL_CULL_FACE");
- if (This->renderUpsideDown) {
+ if (This->render_offscreen) {
glFrontFace(GL_CW);
checkGLcall("glFrontFace GL_CW");
} else {
@@ -3496,7 +3496,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
case WINED3DCULL_CCW:
glEnable(GL_CULL_FACE);
checkGLcall("glEnable GL_CULL_FACE");
- if (This->renderUpsideDown) {
+ if (This->render_offscreen) {
glFrontFace(GL_CCW);
checkGLcall("glFrontFace GL_CCW");
} else {
@@ -7199,9 +7199,12 @@ static void device_reapply_stateblock(IW
This->updateStateBlock = oldUpdateStateBlock;
}
-/* Set the device to render to a texture, or not.
- * This involves changing renderUpsideDown */
-
+/* Set offscreen rendering. When rendering offscreen the surface will be
+ * rendered upside down to compensate for the fact that D3D texture coordinates
+ * are flipped compared to GL texture coordinates. The cullmode is affected by
+ * this, so it must be updated. To update the cullmode stateblock recording has
+ * to be temporarily disabled. The new state management code will hopefully
+ * make this unnecessary */
static void device_render_to_texture(IWineD3DDeviceImpl* This, BOOL isTexture) {
DWORD cullMode;
@@ -7214,9 +7217,7 @@ static void device_render_to_texture(IWi
This->isRecordingState = FALSE;
This->updateStateBlock = This->stateBlock;
- /* Set upside-down rendering, and update the cull mode */
- /* The surface must be rendered upside down to cancel the flip produced by glCopyTexImage */
- This->renderUpsideDown = isTexture;
+ This->render_offscreen = isTexture;
This->last_was_rhw = FALSE;
This->proj_valid = FALSE;
IWineD3DDevice_GetRenderState((IWineD3DDevice*) This, WINED3DRS_CULLMODE, &cullMode);
@@ -7501,7 +7502,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
implicitSwapchainImpl->render_ctx = newContext->context;
}
} else {
- /* Same context, but update renderUpsideDown and cull mode */
+ /* Same context, but update render_offscreen and cull mode */
device_render_to_texture(This, TRUE);
}
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 1bedda4..0bea61f 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -195,7 +195,9 @@ void d3ddevice_set_ortho(IWineD3DDeviceI
a pixel (See comment above glTranslate below) */
glTranslatef(0.375, 0.375, 0);
checkGLcall("glTranslatef(0.375, 0.375, 0)");
- if (This->renderUpsideDown) {
+ /* D3D texture coordinates are flipped compared to OpenGL ones, so
+ * render everything upside down when rendering offscreen. */
+ if (This->render_offscreen) {
glMultMatrixf(invymat);
checkGLcall("glMultMatrixf(invymat)");
}
@@ -301,7 +303,9 @@ static void primitiveInitState(
glTranslatef(0.9 / This->stateBlock->viewport.Width, -0.9 / This->stateBlock->viewport.Height, 0);
checkGLcall("glTranslatef (0.9 / width, -0.9 / height, 0)");
- if (This->renderUpsideDown) {
+ /* D3D texture coordinates are flipped compared to OpenGL ones, so
+ * render everything upside down when rendering offscreen. */
+ if (This->render_offscreen) {
glMultMatrixf(invymat);
checkGLcall("glMultMatrixf(invymat)");
}
@@ -311,7 +315,7 @@ static void primitiveInitState(
/* Vertex Shader output is already transformed, so set up identity matrices */
if (useVS) {
- This->posFixup[1] = This->renderUpsideDown ? -1.0 : 1.0;
+ This->posFixup[1] = This->render_offscreen ? -1.0 : 1.0;
This->posFixup[2] = 0.9 / This->stateBlock->viewport.Width;
This->posFixup[3] = -0.9 / This->stateBlock->viewport.Height;
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 1d8bb10..aa38261 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -545,7 +545,7 @@ typedef struct IWineD3DDeviceImpl
UINT currentPalette;
/* For rendering to a texture using glCopyTexImage */
- BOOL renderUpsideDown;
+ BOOL render_offscreen;
/* Cursor management */
BOOL bCursorVisible;
More information about the wine-cvs
mailing list