From 3cd744e98bf6f7efd640a39c607488af5f9bfbeb Mon Sep 17 00:00:00 2001 From: Matteo Bruni Date: Tue, 15 Sep 2009 20:09:03 +0200 Subject: [PATCH] d3dx9: Add D3DXAssembleShader and related declarations. --- include/d3dx9shader.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/include/d3dx9shader.h b/include/d3dx9shader.h index 899077e2156..a15cab600d6 100644 --- a/include/d3dx9shader.h +++ b/include/d3dx9shader.h @@ -21,6 +21,27 @@ #ifndef __D3DX9SHADER_H__ #define __D3DX9SHADER_H__ +#define D3DXSHADER_DEBUG 0x1 +#define D3DXSHADER_SKIPVALIDATION 0x2 +#define D3DXSHADER_SKIPOPTIMIZATION 0x4 +#define D3DXSHADER_PACKMATRIX_ROWMAJOR 0x8 +#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR 0x10 +#define D3DXSHADER_PARTIALPRECISION 0x20 +#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT 0x40 +#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT 0x80 +#define D3DXSHADER_NO_PRESHADER 0x100 +#define D3DXSHADER_AVOID_FLOW_CONTROL 0x200 +#define D3DXSHADER_PREFER_FLOW_CONTROL 0x400 +#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY 0x1000 +#define D3DXSHADER_IEEE_STRICTNESS 0x2000 + +#define D3DXSHADER_OPTIMIZATION_LEVEL0 0x4000 +#define D3DXSHADER_OPTIMIZATION_LEVEL1 0x0 +#define D3DXSHADER_OPTIMIZATION_LEVEL2 0xC000 +#define D3DXSHADER_OPTIMIZATION_LEVEL3 0x8000 + +#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL 0x10000 + typedef LPCSTR D3DXHANDLE; typedef enum D3DXPARAMETER_CLASS @@ -64,6 +85,26 @@ typedef struct _D3DXMACRO { LPCSTR Definition; } D3DXMACRO, *LPD3DXMACRO; +typedef enum _D3DXINCLUDE_TYPE +{ + D3DXINC_LOCAL, + D3DXINC_SYSTEM, + D3DXINC_FORCE_DWORD = 0x7fffffff, +} D3DXINCLUDE_TYPE, *LPD3DXINCLUDE_TYPE; + +#undef INTERFACE +#define INTERFACE ID3DXInclude + +DECLARE_INTERFACE(ID3DXInclude) +{ + STDMETHOD(Open)(THIS_ D3DXINCLUDE_TYPE include_type, LPCSTR filename, LPCVOID parent_data, LPCVOID *data, UINT *bytes) PURE; + STDMETHOD(Close)(THIS_ LPCVOID data) PURE; +}; + +#define ID3DXInclude_Open(p,a,b,c,d,e) (p)->lpVtbl->Open(p,a,b,c,d,e) +#define ID3DXInclude_Close(p,a) (p)->lpVtbl->Close(p,a) + +typedef struct ID3DXInclude *LPD3DXINCLUDE; #ifdef __cplusplus extern "C" { @@ -74,6 +115,44 @@ UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code); DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code); LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device); +HRESULT WINAPI D3DXAssembleShaderFromFileA(LPCSTR filename, + CONST D3DXMACRO* defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXBUFFER* shader, + LPD3DXBUFFER* error_messages); + +HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR filename, + CONST D3DXMACRO* defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXBUFFER* shader, + LPD3DXBUFFER* error_messages); + +HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module, + LPCSTR resource, + CONST D3DXMACRO* defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXBUFFER* shader, + LPD3DXBUFFER* error_messages); + +HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE module, + LPCWSTR resource, + CONST D3DXMACRO* defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXBUFFER* shader, + LPD3DXBUFFER* error_messages); + +HRESULT WINAPI D3DXAssembleShader(LPCSTR data, + UINT data_len, + CONST D3DXMACRO* defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXBUFFER* shader, + LPD3DXBUFFER* error_messages); + #ifdef __cplusplus } #endif -- 2.11.4.GIT