# HG changeset patch # User Sam Lantinga # Date 1156739977 0 # Node ID 1ee02169bbb0bc14938407096d2a66c0e966e33f # Parent 36a08379b3f291f24faf3100cdfa2cb139ee1d63 Figured out how texture stages work, thanks to this: http://www.toymaker.info/Games/html/texture_states.html Both color and alpha source modulation work now! :) diff -r 36a08379b3f2 -r 1ee02169bbb0 src/video/win32/SDL_d3drender.c --- a/src/video/win32/SDL_d3drender.c Mon Aug 28 04:03:32 2006 +0000 +++ b/src/video/win32/SDL_d3drender.c Mon Aug 28 04:39:37 2006 +0000 @@ -382,9 +382,24 @@ IDirect3DDevice9_SetVertexShader(data->device, NULL); IDirect3DDevice9_SetFVF(data->device, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1); + IDirect3DDevice9_SetRenderState(data->device, D3DRS_ZENABLE, D3DZB_FALSE); IDirect3DDevice9_SetRenderState(data->device, D3DRS_CULLMODE, D3DCULL_NONE); IDirect3DDevice9_SetRenderState(data->device, D3DRS_LIGHTING, FALSE); + /* Enable color modulation by diffuse color */ + IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLOROP, + D3DTOP_MODULATE); + IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLORARG1, + D3DTA_TEXTURE); + IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLORARG2, + D3DTA_DIFFUSE); + /* Enable alpha modulation by diffuse alpha */ + IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAOP, + D3DTOP_MODULATE); + IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAARG1, + D3DTA_TEXTURE); + IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAARG2, + D3DTA_DIFFUSE); return renderer; }