Stefan Dösinger : ddraw: Implement D3DRENDERSTATE_TEXTUREMAPBLEND.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Aug 9 16:18:35 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: de5a2f3fbe708889a9fbc2fd51f94f3ce3ec5781
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=de5a2f3fbe708889a9fbc2fd51f94f3ce3ec5781
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Wed Aug 9 19:30:57 2006 +0200
ddraw: Implement D3DRENDERSTATE_TEXTUREMAPBLEND.
---
dlls/ddraw/device.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 982ec16..c9d5854 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -2241,6 +2241,52 @@ IDirect3DDeviceImpl_7_SetRenderState(IDi
Value);
}
+ case D3DRENDERSTATE_TEXTUREMAPBLEND:
+ {
+ /* Old texture combine setup style, superseded by texture stage states
+ * in D3D7. It is safe for us to wrap it to texture stage states.
+ */
+ switch ( (D3DTEXTUREBLEND) Value)
+ {
+ case D3DTBLEND_MODULATE:
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLORARG2, D3DTA_CURRENT);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLOROP, D3DTOP_MODULATE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
+ break;
+
+ case D3DTBLEND_MODULATEALPHA:
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLORARG2, D3DTA_CURRENT);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLOROP, D3DTOP_MODULATE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
+ break;
+
+ case D3DTBLEND_DECAL:
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
+ break;
+
+ case D3DTBLEND_DECALALPHA:
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
+ IWineD3DDevice_SetTextureStageState(iface, 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
+ break;
+
+ default:
+ ERR("Unhandled texture environment %ld !\n",Value);
+ }
+ return D3D_OK;
+ break;
+ }
+
default:
return IWineD3DDevice_SetRenderState(This->wineD3DDevice,
RenderStateType,
More information about the wine-cvs
mailing list