Stefan Dösinger : wined3d: Get rid of the invymat.

Alexandre Julliard julliard at winehq.org
Thu Dec 27 08:31:30 CST 2007


Module: wine
Branch: master
Commit: 44b8915371a7a021e39c2f298d00b8e4be583fc2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=44b8915371a7a021e39c2f298d00b8e4be583fc2

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Tue Dec 25 23:14:05 2007 +0100

wined3d: Get rid of the invymat.

glScalef(1.0, -1.0, 1.0) does the same as the glMultMatrix with the
invymat matrix, and it is more optimal.

---

 dlls/wined3d/state.c |   15 +++++----------
 1 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 8e9e19b..c62e3fa 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -2735,12 +2735,6 @@ static void transform_view(DWORD state, IWineD3DStateBlockImpl *stateblock, Wine
     }
 }
 
-static const GLfloat invymat[16] = {
-    1.0f, 0.0f, 0.0f, 0.0f,
-    0.0f, -1.0f, 0.0f, 0.0f,
-    0.0f, 0.0f, 1.0f, 0.0f,
-    0.0f, 0.0f, 0.0f, 1.0f};
-
 static void transform_projection(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
     glMatrixMode(GL_PROJECTION);
     checkGLcall("glMatrixMode(GL_PROJECTION)");
@@ -2808,8 +2802,8 @@ static void transform_projection(DWORD state, IWineD3DStateBlockImpl *stateblock
         /* D3D texture coordinates are flipped compared to OpenGL ones, so
          * render everything upside down when rendering offscreen. */
         if (stateblock->wineD3DDevice->render_offscreen) {
-            glMultMatrixf(invymat);
-            checkGLcall("glMultMatrixf(invymat)");
+            glScalef(1.0, -1.0, 1.0);
+            checkGLcall("glScalef");
         }
     } else {
         /* The rule is that the window coordinate 0 does not correspond to the
@@ -2833,12 +2827,13 @@ static void transform_projection(DWORD state, IWineD3DStateBlockImpl *stateblock
         glTranslatef(1.0 / stateblock->viewport.Width, -1.0/ stateblock->viewport.Height, -1.0);
         checkGLcall("glTranslatef (1.0 / width, -1.0 / height, -1.0)");
         glScalef(1.0, 1.0, 2.0);
+        checkGLcall("glScalef");
 
         /* D3D texture coordinates are flipped compared to OpenGL ones, so
             * render everything upside down when rendering offscreen. */
         if (stateblock->wineD3DDevice->render_offscreen) {
-            glMultMatrixf(invymat);
-            checkGLcall("glMultMatrixf(invymat)");
+            glScalef(1.0, -1.0, 1.0);
+            checkGLcall("glScalef");
         }
         glMultMatrixf((float *) &stateblock->transforms[WINED3DTS_PROJECTION].u.m[0][0]);
         checkGLcall("glLoadMatrixf");




More information about the wine-cvs mailing list