From d7f94bf7c93fac6267b45c63a88dcf5fb1c86d43 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Mon, 21 Aug 2006 18:28:05 +0200 Subject: [PATCH] wined3d: Correctly draw transformed and untransformed vertices in the same scene. --- dlls/wined3d/drawprim.c | 10 ++++++++-- dlls/wined3d/wined3d_private.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c index 5eb71f1ed17..c2ed58ccf6b 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c @@ -182,8 +182,13 @@ void d3ddevice_set_ortho(IWineD3DDeviceImpl *This) { width = This->stateBlock->viewport.Width; minZ = This->stateBlock->viewport.MinZ; maxZ = This->stateBlock->viewport.MaxZ; - TRACE("Calling glOrtho with %f, %f, %f, %f\n", width, height, -minZ, -maxZ); - glOrtho(X, X + width, Y + height, Y, -minZ, -maxZ); + if(!This->untransformed) { + TRACE("Calling glOrtho with %f, %f, %f, %f\n", width, height, -minZ, -maxZ); + glOrtho(X, X + width, Y + height, Y, -minZ, -maxZ); + } else { + TRACE("Calling glOrtho with %f, %f, %f, %f\n", width, height, 1.0, -1.0); + glOrtho(X, X + width, Y + height, Y, 1.0, -1.0); + } checkGLcall("glOrtho"); /* Window Coord 0 is the middle of the first pixel, so translate by half @@ -258,6 +263,7 @@ static void primitiveInitState( } else { /* Untransformed, so relies on the view and projection matrices */ + This->untransformed = TRUE; if (!useVS && (This->last_was_rhw || !This->modelview_valid)) { /* Only reapply when have to */ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 35b3a02be01..cfb8a7da4fb 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -513,6 +513,7 @@ typedef struct IWineD3DDeviceImpl UINT alphafunc; BOOL texture_shader_active; /* TODO: Confirm use is correct */ BOOL last_was_notclipped; + BOOL untransformed; /* State block related */ BOOL isRecordingState; -- 2.11.4.GIT