d3dx9: Implement D3DXCreateEffectCompilerFromFile/Resource.
This commit is contained in:
parent
943eefc8fc
commit
b3523a447c
|
@ -48,10 +48,10 @@
|
||||||
@ stub D3DXCreateCylinder
|
@ stub D3DXCreateCylinder
|
||||||
@ stdcall D3DXCreateEffect(ptr ptr long ptr ptr long ptr ptr ptr)
|
@ stdcall D3DXCreateEffect(ptr ptr long ptr ptr long ptr ptr ptr)
|
||||||
@ stdcall D3DXCreateEffectCompiler(ptr long ptr ptr long ptr ptr)
|
@ stdcall D3DXCreateEffectCompiler(ptr long ptr ptr long ptr ptr)
|
||||||
@ stub D3DXCreateEffectCompilerFromFileA
|
@ stdcall D3DXCreateEffectCompilerFromFileA(str ptr ptr long ptr ptr)
|
||||||
@ stub D3DXCreateEffectCompilerFromFileW
|
@ stdcall D3DXCreateEffectCompilerFromFileW(wstr ptr ptr long ptr ptr)
|
||||||
@ stub D3DXCreateEffectCompilerFromResourceA
|
@ stdcall D3DXCreateEffectCompilerFromResourceA(long str ptr ptr long ptr ptr)
|
||||||
@ stub D3DXCreateEffectCompilerFromResourceW
|
@ stdcall D3DXCreateEffectCompilerFromResourceW(long wstr ptr ptr long ptr ptr)
|
||||||
@ stdcall D3DXCreateEffectEx(ptr ptr long ptr ptr ptr long ptr ptr ptr)
|
@ stdcall D3DXCreateEffectEx(ptr ptr long ptr ptr ptr long ptr ptr ptr)
|
||||||
@ stub D3DXCreateEffectFromFileA
|
@ stub D3DXCreateEffectFromFileA
|
||||||
@ stub D3DXCreateEffectFromFileExA
|
@ stub D3DXCreateEffectFromFileExA
|
||||||
|
|
|
@ -998,3 +998,100 @@ HRESULT WINAPI D3DXCreateEffectPool(LPD3DXEFFECTPOOL* pool)
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI D3DXCreateEffectCompilerFromFileW(LPCWSTR srcfile, const D3DXMACRO *defines, LPD3DXINCLUDE include,
|
||||||
|
DWORD flags, LPD3DXEFFECTCOMPILER *effectcompiler, LPD3DXBUFFER *parseerrors)
|
||||||
|
{
|
||||||
|
LPVOID buffer;
|
||||||
|
HRESULT ret;
|
||||||
|
DWORD size;
|
||||||
|
|
||||||
|
TRACE("(%s): relay\n", debugstr_w(srcfile));
|
||||||
|
|
||||||
|
if (!srcfile || !defines)
|
||||||
|
return D3DERR_INVALIDCALL;
|
||||||
|
|
||||||
|
ret = map_view_of_file(srcfile, &buffer, &size);
|
||||||
|
|
||||||
|
if (FAILED(ret))
|
||||||
|
return D3DXERR_INVALIDDATA;
|
||||||
|
|
||||||
|
ret = D3DXCreateEffectCompiler(buffer, size, defines, include, flags, effectcompiler, parseerrors);
|
||||||
|
UnmapViewOfFile(buffer);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI D3DXCreateEffectCompilerFromFileA(LPCSTR srcfile, const D3DXMACRO *defines, LPD3DXINCLUDE include,
|
||||||
|
DWORD flags, LPD3DXEFFECTCOMPILER *effectcompiler, LPD3DXBUFFER *parseerrors)
|
||||||
|
{
|
||||||
|
LPWSTR srcfileW;
|
||||||
|
HRESULT ret;
|
||||||
|
DWORD len;
|
||||||
|
|
||||||
|
TRACE("(void): relay\n");
|
||||||
|
|
||||||
|
if (!srcfile || !defines)
|
||||||
|
return D3DERR_INVALIDCALL;
|
||||||
|
|
||||||
|
len = MultiByteToWideChar(CP_ACP, 0, srcfile, -1, NULL, 0);
|
||||||
|
srcfileW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len * sizeof(WCHAR));
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, srcfile, -1, srcfileW, len);
|
||||||
|
|
||||||
|
ret = D3DXCreateEffectCompilerFromFileW(srcfileW, defines, include, flags, effectcompiler, parseerrors);
|
||||||
|
HeapFree(GetProcessHeap(), 0, srcfileW);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI D3DXCreateEffectCompilerFromResourceA(HMODULE srcmodule, LPCSTR srcresource, const D3DXMACRO *defines,
|
||||||
|
LPD3DXINCLUDE include, DWORD flags, LPD3DXEFFECTCOMPILER *effectcompiler, LPD3DXBUFFER *parseerrors)
|
||||||
|
{
|
||||||
|
HRSRC resinfo;
|
||||||
|
|
||||||
|
TRACE("(%p, %s): relay\n", srcmodule, debugstr_a(srcresource));
|
||||||
|
|
||||||
|
resinfo = FindResourceA(srcmodule, srcresource, (LPCSTR) RT_RCDATA);
|
||||||
|
|
||||||
|
if (resinfo)
|
||||||
|
{
|
||||||
|
LPVOID buffer;
|
||||||
|
HRESULT ret;
|
||||||
|
DWORD size;
|
||||||
|
|
||||||
|
ret = load_resource_into_memory(srcmodule, resinfo, &buffer, &size);
|
||||||
|
|
||||||
|
if (FAILED(ret))
|
||||||
|
return D3DXERR_INVALIDDATA;
|
||||||
|
|
||||||
|
return D3DXCreateEffectCompiler(buffer, size, defines, include, flags, effectcompiler, parseerrors);
|
||||||
|
}
|
||||||
|
|
||||||
|
return D3DXERR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI D3DXCreateEffectCompilerFromResourceW(HMODULE srcmodule, LPCWSTR srcresource, const D3DXMACRO *defines,
|
||||||
|
LPD3DXINCLUDE include, DWORD flags, LPD3DXEFFECTCOMPILER *effectcompiler, LPD3DXBUFFER *parseerrors)
|
||||||
|
{
|
||||||
|
HRSRC resinfo;
|
||||||
|
|
||||||
|
TRACE("(%p, %s): relay\n", srcmodule, debugstr_w(srcresource));
|
||||||
|
|
||||||
|
resinfo = FindResourceW(srcmodule, srcresource, (LPCWSTR) RT_RCDATA);
|
||||||
|
|
||||||
|
if (resinfo)
|
||||||
|
{
|
||||||
|
LPVOID buffer;
|
||||||
|
HRESULT ret;
|
||||||
|
DWORD size;
|
||||||
|
|
||||||
|
ret = load_resource_into_memory(srcmodule, resinfo, &buffer, &size);
|
||||||
|
|
||||||
|
if (FAILED(ret))
|
||||||
|
return D3DXERR_INVALIDDATA;
|
||||||
|
|
||||||
|
return D3DXCreateEffectCompiler(buffer, size, defines, include, flags, effectcompiler, parseerrors);
|
||||||
|
}
|
||||||
|
|
||||||
|
return D3DXERR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue