wined3d: Correctly draw transformed and untransformed vertices in the same scene.
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 5eb71f1..c2ed58c 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -182,8 +182,13 @@
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 @@
} 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 35b3a02..cfb8a7d 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -513,6 +513,7 @@
UINT alphafunc;
BOOL texture_shader_active; /* TODO: Confirm use is correct */
BOOL last_was_notclipped;
+ BOOL untransformed;
/* State block related */
BOOL isRecordingState;