[PATCH] d3dx9: Recognize the D3DXSPRITE_OBJECTSPACE flag

Tony Wasserka tony.wasserka at freenet.de
Mon Mar 9 11:15:59 CDT 2009


---
 dlls/d3dx9_36/sprite.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/dlls/d3dx9_36/sprite.c b/dlls/d3dx9_36/sprite.c
index 6a7e65d..caaaa2f 100644
--- a/dlls/d3dx9_36/sprite.c
+++ b/dlls/d3dx9_36/sprite.c
@@ -200,12 +200,14 @@ static void set_states(ID3DXSpriteImpl *object)
     }
 
     /* Matrices */
-    D3DXMatrixIdentity(&mat);
-    IDirect3DDevice9_SetTransform(object->device, D3DTS_WORLD, &mat);
-    IDirect3DDevice9_SetTransform(object->device, D3DTS_VIEW, &mat);
-    IDirect3DDevice9_GetViewport(object->device, &vp);
-    D3DXMatrixOrthoOffCenterLH(&mat, vp.X+0.5f, (float)vp.Width+vp.X+0.5f, (float)vp.Height+vp.Y+0.5f, vp.Y+0.5f, vp.MinZ, vp.MaxZ);
-    IDirect3DDevice9_SetTransform(object->device, D3DTS_PROJECTION, &mat);
+    if(!(object->flags & D3DXSPRITE_OBJECTSPACE)) {
+        D3DXMatrixIdentity(&mat);
+        IDirect3DDevice9_SetTransform(object->device, D3DTS_WORLD, &mat);
+        IDirect3DDevice9_SetTransform(object->device, D3DTS_VIEW, &mat);
+        IDirect3DDevice9_GetViewport(object->device, &vp);
+        D3DXMatrixOrthoOffCenterLH(&mat, vp.X+0.5f, (float)vp.Width+vp.X+0.5f, (float)vp.Height+vp.Y+0.5f, vp.Y+0.5f, vp.MinZ, vp.MaxZ);
+        IDirect3DDevice9_SetTransform(object->device, D3DTS_PROJECTION, &mat);
+    }
 }
 
 static HRESULT WINAPI ID3DXSpriteImpl_Begin(LPD3DXSPRITE iface, DWORD flags)
@@ -221,7 +223,7 @@ static HRESULT WINAPI ID3DXSpriteImpl_Begin(LPD3DXSPRITE iface, DWORD flags)
 D3DXSPRITE_ALPHABLEND: enables alpha blending
 D3DXSPRITE_BILLBOARD: makes the sprite always face the camera
 D3DXSPRITE_DONOTMODIFY_RENDERSTATE: name says it all (done)
-D3DXSPRITE_OBJECTSPACE: do not change device transforms
+D3DXSPRITE_OBJECTSPACE: do not change device transforms (done)
 D3DXSPRITE_SORT_DEPTH_BACKTOFRONT: sort by position
 D3DXSPRITE_SORT_DEPTH_FRONTTOBACK: sort by position
 D3DXSPRITE_SORT_TEXTURE: sort by texture (so that it doesn't change too often)
-- 
1.5.6.6


--------------090709090907050901050001--



More information about the wine-patches mailing list