Stefan Dösinger : ddraw: Forward all 4 world matrices to wined3d.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu May 3 08:57:09 CDT 2007
Module: wine
Branch: master
Commit: 6acc0a151de888cc06d8c0b95710fe5e551fec3b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6acc0a151de888cc06d8c0b95710fe5e551fec3b
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Wed Apr 25 16:44:47 2007 +0200
ddraw: Forward all 4 world matrices to wined3d.
---
dlls/ddraw/device.c | 63 +++++++++++++++++++++------------------------------
1 files changed, 26 insertions(+), 37 deletions(-)
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 5ef8748..30f80ad 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -2721,18 +2721,14 @@ IDirect3DDeviceImpl_7_SetTransform(IDirect3DDevice7 *iface,
if(!Matrix)
return DDERR_INVALIDPARAMS;
- /* D3DTRANSFORMSTATE_WORLD doesn't exist in WineD3D,
- * use D3DTS_WORLDMATRIX(0) instead
- * D3DTS_WORLDMATRIX(index) is (D3DTRANSFORMSTATETYPE)(index + 256)
- */
- if(TransformStateType == D3DTRANSFORMSTATE_WORLD)
- type = (D3DTRANSFORMSTATETYPE)(0 + 256);
-
- /* FIXME:
- Unhandled: D3DTRANSFORMSTATE_WORLD1
- Unhandled: D3DTRANSFORMSTATE_WORLD2
- Unhandled: D3DTRANSFORMSTATE_WORLD3
- */
+ switch(TransformStateType)
+ {
+ case D3DTRANSFORMSTATE_WORLD : type = WINED3DTS_WORLDMATRIX(0); break;
+ case D3DTRANSFORMSTATE_WORLD1: type = WINED3DTS_WORLDMATRIX(1); break;
+ case D3DTRANSFORMSTATE_WORLD2: type = WINED3DTS_WORLDMATRIX(2); break;
+ case D3DTRANSFORMSTATE_WORLD3: type = WINED3DTS_WORLDMATRIX(3); break;
+ default: type = TransformStateType;
+ }
/* Note: D3DMATRIX is compatible with WINED3DMATRIX */
return IWineD3DDevice_SetTransform(This->wineD3DDevice,
@@ -2793,18 +2789,14 @@ IDirect3DDeviceImpl_7_GetTransform(IDirect3DDevice7 *iface,
if(!Matrix)
return DDERR_INVALIDPARAMS;
- /* D3DTRANSFORMSTATE_WORLD doesn't exist in WineD3D,
- * use D3DTS_WORLDMATRIX(0) instead
- * D3DTS_WORLDMATRIX(index) is (D3DTRANSFORMSTATETYPE)(index + 256)
- */
- if(TransformStateType == D3DTRANSFORMSTATE_WORLD)
- type = (D3DTRANSFORMSTATETYPE)(0 + 256);
-
- /* FIXME:
- Unhandled: D3DTRANSFORMSTATE_WORLD1
- Unhandled: D3DTRANSFORMSTATE_WORLD2
- Unhandled: D3DTRANSFORMSTATE_WORLD3
- */
+ switch(TransformStateType)
+ {
+ case D3DTRANSFORMSTATE_WORLD : type = WINED3DTS_WORLDMATRIX(0); break;
+ case D3DTRANSFORMSTATE_WORLD1: type = WINED3DTS_WORLDMATRIX(1); break;
+ case D3DTRANSFORMSTATE_WORLD2: type = WINED3DTS_WORLDMATRIX(2); break;
+ case D3DTRANSFORMSTATE_WORLD3: type = WINED3DTS_WORLDMATRIX(3); break;
+ default: type = TransformStateType;
+ }
/* Note: D3DMATRIX is compatible with WINED3DMATRIX */
return IWineD3DDevice_GetTransform(This->wineD3DDevice, type, (WINED3DMATRIX*) Matrix);
@@ -2858,24 +2850,21 @@ IDirect3DDeviceImpl_7_MultiplyTransform(IDirect3DDevice7 *iface,
D3DMATRIX *D3DMatrix)
{
ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
+ D3DTRANSFORMSTATETYPE type;
TRACE("(%p)->(%08x,%p): Relay\n", This, TransformStateType, D3DMatrix);
- /* D3DTRANSFORMSTATE_WORLD doesn't exist in WineD3D,
- * use D3DTS_WORLDMATRIX(0) instead
- * D3DTS_WORLDMATRIX(index) is (D3DTRANSFORMSTATETYPE)(index + 256)
- */
- if(TransformStateType == D3DTRANSFORMSTATE_WORLD)
- TransformStateType = (D3DTRANSFORMSTATETYPE)(0 + 256);
-
- /* FIXME:
- Unhandled: D3DTRANSFORMSTATE_WORLD1
- Unhandled: D3DTRANSFORMSTATE_WORLD2
- Unhandled: D3DTRANSFORMSTATE_WORLD3
- */
+ switch(TransformStateType)
+ {
+ case D3DTRANSFORMSTATE_WORLD : type = WINED3DTS_WORLDMATRIX(0); break;
+ case D3DTRANSFORMSTATE_WORLD1: type = WINED3DTS_WORLDMATRIX(1); break;
+ case D3DTRANSFORMSTATE_WORLD2: type = WINED3DTS_WORLDMATRIX(2); break;
+ case D3DTRANSFORMSTATE_WORLD3: type = WINED3DTS_WORLDMATRIX(3); break;
+ default: type = TransformStateType;
+ }
/* Note: D3DMATRIX is compatible with WINED3DMATRIX */
return IWineD3DDevice_MultiplyTransform(This->wineD3DDevice,
- TransformStateType,
+ type,
(WINED3DMATRIX*) D3DMatrix);
}
More information about the wine-cvs
mailing list