[17/18] d3dx9: Implement D3DXAssembleShaderFromResource

Matteo Bruni matteo.mystral at gmail.com
Sun Aug 16 12:54:26 CDT 2009


-------------- next part --------------
From da971676c0406808876c1bffba0e714a29d98d6f Mon Sep 17 00:00:00 2001
From: Matteo Bruni <matteo.mystral at gmail.com>
Date: Sun, 16 Aug 2009 17:14:40 +0200
Subject: d3dx9: Implement D3DXAssembleShaderFromResource

---
 dlls/d3dx9_36/d3dx9_36.spec |    4 +-
 dlls/d3dx9_36/shader.c      |   46 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 0d39114..08bb7f5 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -1,8 +1,8 @@
 @ stdcall D3DXAssembleShader(ptr long ptr ptr long ptr ptr)
 @ stdcall D3DXAssembleShaderFromFileA(str ptr ptr long ptr ptr)
 @ stdcall D3DXAssembleShaderFromFileW(wstr ptr ptr long ptr ptr)
-@ stub D3DXAssembleShaderFromResourceA
-@ stub D3DXAssembleShaderFromResourceW
+@ stdcall D3DXAssembleShaderFromResourceA(long str ptr ptr long ptr ptr)
+@ stdcall D3DXAssembleShaderFromResourceW(long wstr ptr ptr long ptr ptr)
 @ stdcall D3DXBoxBoundProbe(ptr ptr ptr ptr)
 @ stub D3DXCheckCubeTextureRequirements
 @ stub D3DXCheckTextureRequirements
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index eb14eb5..8046787 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -611,3 +611,49 @@ HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR pSrcFile,
     LeaveCriticalSection(&mutex);
     return hr;
 }
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE hSrcModule,
+                                               LPCSTR pSrcResource,
+                                               CONST D3DXMACRO* pDefines,
+                                               LPD3DXINCLUDE pInclude,
+                                               DWORD Flags,
+                                               LPD3DXBUFFER* ppShader,
+                                               LPD3DXBUFFER* ppErrorMsgs) {
+    HRSRC res;
+    LPCSTR buffer;
+    DWORD len;
+
+    if(!(res=FindResourceA(hSrcModule, pSrcResource, (LPCSTR)RT_RCDATA)))
+    {
+        return D3DERR_INVALIDCALL;
+    }
+    if(FAILED(load_resource_into_memory(hSrcModule, res, (LPVOID *)&buffer, &len)))
+    {
+        return D3DERR_INVALIDCALL;
+    }
+    return D3DXAssembleShader(buffer, len, pDefines, pInclude, Flags,
+                              ppShader, ppErrorMsgs);
+}
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE hSrcModule,
+                                               LPCWSTR pSrcResource,
+                                               CONST D3DXMACRO* pDefines,
+                                               LPD3DXINCLUDE pInclude,
+                                               DWORD Flags,
+                                               LPD3DXBUFFER* ppShader,
+                                               LPD3DXBUFFER* ppErrorMsgs) {
+    HRSRC res;
+    LPCSTR buffer;
+    DWORD len;
+
+    if(!(res=FindResourceW(hSrcModule, pSrcResource, (LPCWSTR)RT_RCDATA)))
+    {
+        return D3DERR_INVALIDCALL;
+    }
+    if(FAILED(load_resource_into_memory(hSrcModule, res, (LPVOID *)&buffer, &len)))
+    {
+        return D3DERR_INVALIDCALL;
+    }
+    return D3DXAssembleShader(buffer, len, pDefines, pInclude, Flags,
+                              ppShader, ppErrorMsgs);
+}
-- 
1.6.3.3


More information about the wine-patches mailing list