2 * Copyright 2010 Christian Costa
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __D3DX9EFFECT_H__
22 #define __D3DX9EFFECT_H__
24 typedef struct _D3DXEFFECT_DESC
{
31 typedef struct _D3DXPARAMETER_DESC
{
34 D3DXPARAMETER_CLASS Class
;
35 D3DXPARAMETER_TYPE Type
;
45 typedef struct _D3DXTECHNIQUE_DESC
{
51 typedef struct _D3DXPASS_DESC
{
54 CONST DWORD
*pVertexShaderFunction
;
55 CONST DWORD
*pPixelShaderFunction
;
58 typedef struct _D3DXFUNCTION_DESC
{
63 typedef struct ID3DXEffectPool
*LPD3DXEFFECTPOOL
;
65 DEFINE_GUID(IID_ID3DXEffectPool
, 0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
68 #define INTERFACE ID3DXEffectPool
70 DECLARE_INTERFACE_(ID3DXEffectPool
, IUnknown
)
72 /*** IUnknown methods ***/
73 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
74 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
75 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
78 typedef struct ID3DXBaseEffect
*LPD3DXBASEEFFECT
;
80 DEFINE_GUID(IID_ID3DXBaseEffect
, 0x17c18ac, 0x103f, 0x4417, 0x8c, 0x51, 0x6b, 0xf6, 0xef, 0x1e, 0x56, 0xbe);
83 #define INTERFACE ID3DXBaseEffect
85 DECLARE_INTERFACE_(ID3DXBaseEffect
, IUnknown
)
87 /*** IUnknown methods ***/
88 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
89 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
90 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
91 /*** ID3DXBaseEffect methods ***/
92 STDMETHOD(GetDesc
)(THIS_ D3DXEFFECT_DESC
* desc
) PURE
;
93 STDMETHOD(GetParameterDesc
)(THIS_ D3DXHANDLE parameter
, D3DXPARAMETER_DESC
* desc
) PURE
;
94 STDMETHOD(GetTechniqueDesc
)(THIS_ D3DXHANDLE technique
, D3DXTECHNIQUE_DESC
* desc
) PURE
;
95 STDMETHOD(GetPassDesc
)(THIS_ D3DXHANDLE pass
, D3DXPASS_DESC
* desc
) PURE
;
96 STDMETHOD(GetFunctionDesc
)(THIS_ D3DXHANDLE shader
, D3DXFUNCTION_DESC
* desc
) PURE
;
97 STDMETHOD_(D3DXHANDLE
, GetParameter
)(THIS_ D3DXHANDLE parameter
, UINT index
) PURE
;
98 STDMETHOD_(D3DXHANDLE
, GetParameterByName
)(THIS_ D3DXHANDLE parameter
, LPCSTR name
) PURE
;
99 STDMETHOD_(D3DXHANDLE
, GetParameterBySemantic
)(THIS_ D3DXHANDLE parameter
, LPCSTR semantic
) PURE
;
100 STDMETHOD_(D3DXHANDLE
, GetParameterElement
)(THIS_ D3DXHANDLE parameter
, UINT index
) PURE
;
101 STDMETHOD_(D3DXHANDLE
, GetTechnique
)(THIS_ UINT index
) PURE
;
102 STDMETHOD_(D3DXHANDLE
, GetTechniqueByName
)(THIS_ LPCSTR name
) PURE
;
103 STDMETHOD_(D3DXHANDLE
, GetPass
)(THIS_ D3DXHANDLE technique
, UINT index
) PURE
;
104 STDMETHOD_(D3DXHANDLE
, GetPassByName
)(THIS_ D3DXHANDLE technique
, LPCSTR name
) PURE
;
105 STDMETHOD_(D3DXHANDLE
, GetFunction
)(THIS_ UINT index
);
106 STDMETHOD_(D3DXHANDLE
, GetFunctionByName
)(THIS_ LPCSTR name
);
107 STDMETHOD_(D3DXHANDLE
, GetAnnotation
)(THIS_ D3DXHANDLE object
, UINT index
) PURE
;
108 STDMETHOD_(D3DXHANDLE
, GetAnnotationByName
)(THIS_ D3DXHANDLE object
, LPCSTR name
) PURE
;
109 STDMETHOD(SetValue
)(THIS_ D3DXHANDLE parameter
, LPCVOID data
, UINT bytes
) PURE
;
110 STDMETHOD(GetValue
)(THIS_ D3DXHANDLE parameter
, LPVOID data
, UINT bytes
) PURE
;
111 STDMETHOD(SetBool
)(THIS_ D3DXHANDLE parameter
, BOOL b
) PURE
;
112 STDMETHOD(GetBool
)(THIS_ D3DXHANDLE parameter
, BOOL
* b
) PURE
;
113 STDMETHOD(SetBoolArray
)(THIS_ D3DXHANDLE parameter
, CONST BOOL
* b
, UINT count
) PURE
;
114 STDMETHOD(GetBoolArray
)(THIS_ D3DXHANDLE parameter
, BOOL
* b
, UINT count
) PURE
;
115 STDMETHOD(SetInt
)(THIS_ D3DXHANDLE parameter
, INT n
) PURE
;
116 STDMETHOD(GetInt
)(THIS_ D3DXHANDLE parameter
, INT
* n
) PURE
;
117 STDMETHOD(SetIntArray
)(THIS_ D3DXHANDLE parameter
, CONST INT
* n
, UINT count
) PURE
;
118 STDMETHOD(GetIntArray
)(THIS_ D3DXHANDLE parameter
, INT
* n
, UINT count
) PURE
;
119 STDMETHOD(SetFloat
)(THIS_ D3DXHANDLE parameter
, FLOAT f
) PURE
;
120 STDMETHOD(GetFloat
)(THIS_ D3DXHANDLE parameter
, FLOAT
* f
) PURE
;
121 STDMETHOD(SetFloatArray
)(THIS_ D3DXHANDLE parameter
, CONST FLOAT
* f
, UINT count
) PURE
;
122 STDMETHOD(GetFloatArray
)(THIS_ D3DXHANDLE parameter
, FLOAT
* f
, UINT count
) PURE
;
123 STDMETHOD(SetVector
)(THIS_ D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
) PURE
;
124 STDMETHOD(GetVector
)(THIS_ D3DXHANDLE parameter
, D3DXVECTOR4
* vector
) PURE
;
125 STDMETHOD(SetVectorArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
, UINT count
) PURE
;
126 STDMETHOD(GetVectorArray
)(THIS_ D3DXHANDLE parameter
, D3DXVECTOR4
* vector
, UINT count
) PURE
;
127 STDMETHOD(SetMatrix
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
) PURE
;
128 STDMETHOD(GetMatrix
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
) PURE
;
129 STDMETHOD(SetMatrixArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
) PURE
;
130 STDMETHOD(GetMatrixArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
) PURE
;
131 STDMETHOD(SetMatrixPointerArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
) PURE
;
132 STDMETHOD(GetMatrixPointerArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
) PURE
;
133 STDMETHOD(SetMatrixTranspose
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
) PURE
;
134 STDMETHOD(GetMatrixTranspose
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
) PURE
;
135 STDMETHOD(SetMatrixTransposeArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
) PURE
;
136 STDMETHOD(GetMatrixTransposeArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
) PURE
;
137 STDMETHOD(SetMatrixTransposePointerArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
) PURE
;
138 STDMETHOD(GetMatrixTransposePointerArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
) PURE
;
139 STDMETHOD(SetString
)(THIS_ D3DXHANDLE parameter
, LPCSTR string
) PURE
;
140 STDMETHOD(GetString
)(THIS_ D3DXHANDLE parameter
, LPCSTR
* string
) PURE
;
141 STDMETHOD(SetTexture
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9 texture
) PURE
;
142 STDMETHOD(GetTexture
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9
* texture
) PURE
;
143 STDMETHOD(SetPixelShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DPIXELSHADER9 pshader
) PURE
;
144 STDMETHOD(GetPixelShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DPIXELSHADER9
* pshader
) PURE
;
145 STDMETHOD(SetVertexShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DVERTEXSHADER9 vshader
) PURE
;
146 STDMETHOD(GetVertexShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DVERTEXSHADER9
* vshader
) PURE
;
147 STDMETHOD(SetArrayRange
)(THIS_ D3DXHANDLE parameter
, UINT start
, UINT end
) PURE
;
150 typedef struct ID3DXEffectStateManager
*LPD3DXEFFECTSTATEMANAGER
;
152 DEFINE_GUID(IID_ID3DXEffectStateManager
, 0x79aab587, 0x6dbc, 0x4fa7, 0x82, 0xde, 0x37, 0xfa, 0x17, 0x81, 0xc5, 0xce);
155 #define INTERFACE ID3DXEffectStateManager
157 DECLARE_INTERFACE_(ID3DXEffectStateManager
, IUnknown
)
159 /*** IUnknown methods ***/
160 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
161 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
162 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
163 /*** ID3DXEffectStateManager methods ***/
164 STDMETHOD(SetTransform
)(THIS_ D3DTRANSFORMSTATETYPE state
, CONST D3DMATRIX
* matrix
) PURE
;
165 STDMETHOD(SetMaterial
)(THIS_ CONST D3DMATERIAL9
* material
) PURE
;
166 STDMETHOD(SetLight
)(THIS_ DWORD index
, CONST D3DLIGHT9
* light
) PURE
;
167 STDMETHOD(LightEnable
)(THIS_ DWORD index
, BOOL enable
) PURE
;
168 STDMETHOD(SetRenderState
)(THIS_ D3DRENDERSTATETYPE state
, DWORD value
) PURE
;
169 STDMETHOD(SetTexture
)(THIS_ DWORD stage
, LPDIRECT3DBASETEXTURE9 texture
) PURE
;
170 STDMETHOD(SetTextureStageState
)(THIS_ DWORD stage
, D3DTEXTURESTAGESTATETYPE type
, DWORD value
) PURE
;
171 STDMETHOD(SetSamplerState
)(THIS_ DWORD sampler
, D3DSAMPLERSTATETYPE type
, DWORD value
) PURE
;
172 STDMETHOD(SetNPatchMode
)(THIS_ FLOAT num_segments
) PURE
;
173 STDMETHOD(SetFVF
)(THIS_ DWORD format
) PURE
;
174 STDMETHOD(SetVertexShader
)(THIS_ LPDIRECT3DVERTEXSHADER9 shader
) PURE
;
175 STDMETHOD(SetVertexShaderConstantF
)(THIS_ UINT register_index
, CONST FLOAT
* constant_data
, UINT register_count
) PURE
;
176 STDMETHOD(SetVertexShaderConstantI
)(THIS_ UINT register_index
, CONST INT
* constant_data
, UINT register_count
) PURE
;
177 STDMETHOD(SetVertexShaderConstantB
)(THIS_ UINT register_index
, CONST BOOL
* constant_data
, UINT register_count
) PURE
;
178 STDMETHOD(SetPixelShader
)(THIS_ LPDIRECT3DPIXELSHADER9 shader
) PURE
;
179 STDMETHOD(SetPixelShaderConstantF
)(THIS_ UINT register_index
, CONST FLOAT
* constant_data
, UINT register_count
) PURE
;
180 STDMETHOD(SetPixelShaderConstantI
)(THIS_ UINT register_index
, CONST INT
* constant_data
, UINT register_count
) PURE
;
181 STDMETHOD(SetPixelShaderConstantB
)(THIS_ UINT register_index
, CONST BOOL
* constant_data
, UINT register_count
) PURE
;
184 typedef struct ID3DXEffect
*LPD3DXEFFECT
;
186 DEFINE_GUID(IID_ID3DXEffect
, 0xf6ceb4b3, 0x4e4c, 0x40dd, 0xb8, 0x83, 0x8d, 0x8d, 0xe5, 0xea, 0xc, 0xd5);
189 #define INTERFACE ID3DXEffect
191 DECLARE_INTERFACE_(ID3DXEffect
, ID3DXBaseEffect
)
193 /*** IUnknown methods ***/
194 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
195 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
196 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
197 /*** ID3DXBaseEffect methods ***/
198 STDMETHOD(GetDesc
)(THIS_ D3DXEFFECT_DESC
* desc
) PURE
;
199 STDMETHOD(GetParameterDesc
)(THIS_ D3DXHANDLE parameter
, D3DXPARAMETER_DESC
* desc
) PURE
;
200 STDMETHOD(GetTechniqueDesc
)(THIS_ D3DXHANDLE technique
, D3DXTECHNIQUE_DESC
* desc
) PURE
;
201 STDMETHOD(GetPassDesc
)(THIS_ D3DXHANDLE pass
, D3DXPASS_DESC
* desc
) PURE
;
202 STDMETHOD(GetFunctionDesc
)(THIS_ D3DXHANDLE shader
, D3DXFUNCTION_DESC
* desc
) PURE
;
203 STDMETHOD_(D3DXHANDLE
, GetParameter
)(THIS_ D3DXHANDLE parameter
, UINT index
) PURE
;
204 STDMETHOD_(D3DXHANDLE
, GetParameterByName
)(THIS_ D3DXHANDLE parameter
, LPCSTR name
) PURE
;
205 STDMETHOD_(D3DXHANDLE
, GetParameterBySemantic
)(THIS_ D3DXHANDLE parameter
, LPCSTR semantic
) PURE
;
206 STDMETHOD_(D3DXHANDLE
, GetParameterElement
)(THIS_ D3DXHANDLE parameter
, UINT index
) PURE
;
207 STDMETHOD_(D3DXHANDLE
, GetTechnique
)(THIS_ UINT index
) PURE
;
208 STDMETHOD_(D3DXHANDLE
, GetTechniqueByName
)(THIS_ LPCSTR name
) PURE
;
209 STDMETHOD_(D3DXHANDLE
, GetPass
)(THIS_ D3DXHANDLE technique
, UINT index
) PURE
;
210 STDMETHOD_(D3DXHANDLE
, GetPassByName
)(THIS_ D3DXHANDLE technique
, LPCSTR name
) PURE
;
211 STDMETHOD_(D3DXHANDLE
, GetFunction
)(THIS_ UINT index
);
212 STDMETHOD_(D3DXHANDLE
, GetFunctionByName
)(THIS_ LPCSTR name
);
213 STDMETHOD_(D3DXHANDLE
, GetAnnotation
)(THIS_ D3DXHANDLE object
, UINT index
) PURE
;
214 STDMETHOD_(D3DXHANDLE
, GetAnnotationByName
)(THIS_ D3DXHANDLE object
, LPCSTR name
) PURE
;
215 STDMETHOD(SetValue
)(THIS_ D3DXHANDLE parameter
, LPCVOID data
, UINT bytes
) PURE
;
216 STDMETHOD(GetValue
)(THIS_ D3DXHANDLE parameter
, LPVOID data
, UINT bytes
) PURE
;
217 STDMETHOD(SetBool
)(THIS_ D3DXHANDLE parameter
, BOOL b
) PURE
;
218 STDMETHOD(GetBool
)(THIS_ D3DXHANDLE parameter
, BOOL
* b
) PURE
;
219 STDMETHOD(SetBoolArray
)(THIS_ D3DXHANDLE parameter
, CONST BOOL
* b
, UINT count
) PURE
;
220 STDMETHOD(GetBoolArray
)(THIS_ D3DXHANDLE parameter
, BOOL
* b
, UINT count
) PURE
;
221 STDMETHOD(SetInt
)(THIS_ D3DXHANDLE parameter
, INT n
) PURE
;
222 STDMETHOD(GetInt
)(THIS_ D3DXHANDLE parameter
, INT
* n
) PURE
;
223 STDMETHOD(SetIntArray
)(THIS_ D3DXHANDLE parameter
, CONST INT
* n
, UINT count
) PURE
;
224 STDMETHOD(GetIntArray
)(THIS_ D3DXHANDLE parameter
, INT
* n
, UINT count
) PURE
;
225 STDMETHOD(SetFloat
)(THIS_ D3DXHANDLE parameter
, FLOAT f
) PURE
;
226 STDMETHOD(GetFloat
)(THIS_ D3DXHANDLE parameter
, FLOAT
* f
) PURE
;
227 STDMETHOD(SetFloatArray
)(THIS_ D3DXHANDLE parameter
, CONST FLOAT
* f
, UINT count
) PURE
;
228 STDMETHOD(GetFloatArray
)(THIS_ D3DXHANDLE parameter
, FLOAT
* f
, UINT count
) PURE
;
229 STDMETHOD(SetVector
)(THIS_ D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
) PURE
;
230 STDMETHOD(GetVector
)(THIS_ D3DXHANDLE parameter
, D3DXVECTOR4
* vector
) PURE
;
231 STDMETHOD(SetVectorArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
, UINT count
) PURE
;
232 STDMETHOD(GetVectorArray
)(THIS_ D3DXHANDLE parameter
, D3DXVECTOR4
* vector
, UINT count
) PURE
;
233 STDMETHOD(SetMatrix
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
) PURE
;
234 STDMETHOD(GetMatrix
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
) PURE
;
235 STDMETHOD(SetMatrixArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
) PURE
;
236 STDMETHOD(GetMatrixArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
) PURE
;
237 STDMETHOD(SetMatrixPointerArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
) PURE
;
238 STDMETHOD(GetMatrixPointerArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
) PURE
;
239 STDMETHOD(SetMatrixTranspose
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
) PURE
;
240 STDMETHOD(GetMatrixTranspose
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
) PURE
;
241 STDMETHOD(SetMatrixTransposeArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
) PURE
;
242 STDMETHOD(GetMatrixTransposeArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
) PURE
;
243 STDMETHOD(SetMatrixTransposePointerArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
) PURE
;
244 STDMETHOD(GetMatrixTransposePointerArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
) PURE
;
245 STDMETHOD(SetString
)(THIS_ D3DXHANDLE parameter
, LPCSTR string
) PURE
;
246 STDMETHOD(GetString
)(THIS_ D3DXHANDLE parameter
, LPCSTR
* string
) PURE
;
247 STDMETHOD(SetTexture
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9 texture
) PURE
;
248 STDMETHOD(GetTexture
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9
* texture
) PURE
;
249 STDMETHOD(GetPixelShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DPIXELSHADER9
* pshader
) PURE
;
250 STDMETHOD(GetVertexShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DVERTEXSHADER9
* vshader
) PURE
;
251 STDMETHOD(SetArrayRange
)(THIS_ D3DXHANDLE parameter
, UINT start
, UINT end
) PURE
;
252 /*** ID3DXEffect methods ***/
253 STDMETHOD(GetPool
)(THIS_ LPD3DXEFFECTPOOL
* pool
) PURE
;
254 STDMETHOD(SetTechnique
)(THIS_ D3DXHANDLE technique
) PURE
;
255 STDMETHOD_(D3DXHANDLE
, GetCurrentTechnique
)(THIS
) PURE
;
256 STDMETHOD(ValidateTechnique
)(THIS_ D3DXHANDLE technique
) PURE
;
257 STDMETHOD(FindNextValidTechnique
)(THIS_ D3DXHANDLE technique
, D3DXHANDLE
* next_technique
) PURE
;
258 STDMETHOD_(BOOL
, IsParameterUsed
)(THIS_ D3DXHANDLE parameter
, D3DXHANDLE technique
) PURE
;
259 STDMETHOD(Begin
)(THIS_ UINT
*passes
, DWORD flags
) PURE
;
260 STDMETHOD(BeginPass
)(THIS_ UINT pass
) PURE
;
261 STDMETHOD(CommitChanges
)(THIS
) PURE
;
262 STDMETHOD(EndPass
)(THIS
) PURE
;
263 STDMETHOD(End
)(THIS
) PURE
;
264 STDMETHOD(GetDevice
)(THIS_ LPDIRECT3DDEVICE9
* device
) PURE
;
265 STDMETHOD(OnLostDevice
)(THIS
) PURE
;
266 STDMETHOD(OnResetDevice
)(THIS
) PURE
;
267 STDMETHOD(SetStateManager
)(THIS_ LPD3DXEFFECTSTATEMANAGER manager
) PURE
;
268 STDMETHOD(GetStateManager
)(THIS_ LPD3DXEFFECTSTATEMANAGER
* manager
) PURE
;
269 STDMETHOD(BeginParameterBlock
)(THIS
) PURE
;
270 STDMETHOD_(D3DXHANDLE
, EndParameterBlock
)(THIS
) PURE
;
271 STDMETHOD(ApplyParameterBlock
)(THIS_ D3DXHANDLE parameter_block
) PURE
;
272 STDMETHOD(DeleteParameterBlock
)(THIS_ D3DXHANDLE parameter_block
) PURE
;
273 STDMETHOD(CloneEffect
)(THIS_ LPDIRECT3DDEVICE9 device
, LPD3DXEFFECT
* effect
) PURE
;
274 STDMETHOD(SetRawValue
)(THIS_ D3DXHANDLE parameter
, LPCVOID data
, UINT byte_offset
, UINT bytes
) PURE
;
277 typedef struct ID3DXEffectCompiler
*LPD3DXEFFECTCOMPILER
;
279 DEFINE_GUID(IID_ID3DXEffectCompiler
, 0x51b8a949, 0x1a31, 0x47e6, 0xbe, 0xa0, 0x4b, 0x30, 0xdb, 0x53, 0xf1, 0xe0);
282 #define INTERFACE ID3DXEffectCompiler
284 DECLARE_INTERFACE_(ID3DXEffectCompiler
, ID3DXBaseEffect
)
286 /*** IUnknown methods ***/
287 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
288 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
289 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
290 /*** ID3DXBaseEffect methods ***/
291 STDMETHOD(GetDesc
)(THIS_ D3DXEFFECT_DESC
* desc
) PURE
;
292 STDMETHOD(GetParameterDesc
)(THIS_ D3DXHANDLE parameter
, D3DXPARAMETER_DESC
* desc
) PURE
;
293 STDMETHOD(GetTechniqueDesc
)(THIS_ D3DXHANDLE technique
, D3DXTECHNIQUE_DESC
* desc
) PURE
;
294 STDMETHOD(GetPassDesc
)(THIS_ D3DXHANDLE pass
, D3DXPASS_DESC
* desc
) PURE
;
295 STDMETHOD(GetFunctionDesc
)(THIS_ D3DXHANDLE shader
, D3DXFUNCTION_DESC
* desc
) PURE
;
296 STDMETHOD_(D3DXHANDLE
, GetParameter
)(THIS_ D3DXHANDLE parameter
, UINT index
) PURE
;
297 STDMETHOD_(D3DXHANDLE
, GetParameterByName
)(THIS_ D3DXHANDLE parameter
, LPCSTR name
) PURE
;
298 STDMETHOD_(D3DXHANDLE
, GetParameterBySemantic
)(THIS_ D3DXHANDLE parameter
, LPCSTR semantic
) PURE
;
299 STDMETHOD_(D3DXHANDLE
, GetParameterElement
)(THIS_ D3DXHANDLE parameter
, UINT index
) PURE
;
300 STDMETHOD_(D3DXHANDLE
, GetTechnique
)(THIS_ UINT index
) PURE
;
301 STDMETHOD_(D3DXHANDLE
, GetTechniqueByName
)(THIS_ LPCSTR name
) PURE
;
302 STDMETHOD_(D3DXHANDLE
, GetPass
)(THIS_ D3DXHANDLE technique
, UINT index
) PURE
;
303 STDMETHOD_(D3DXHANDLE
, GetPassByName
)(THIS_ D3DXHANDLE technique
, LPCSTR name
) PURE
;
304 STDMETHOD_(D3DXHANDLE
, GetFunction
)(THIS_ UINT index
);
305 STDMETHOD_(D3DXHANDLE
, GetFunctionByName
)(THIS_ LPCSTR name
);
306 STDMETHOD_(D3DXHANDLE
, GetAnnotation
)(THIS_ D3DXHANDLE object
, UINT index
) PURE
;
307 STDMETHOD_(D3DXHANDLE
, GetAnnotationByName
)(THIS_ D3DXHANDLE object
, LPCSTR name
) PURE
;
308 STDMETHOD(SetValue
)(THIS_ D3DXHANDLE parameter
, LPCVOID data
, UINT bytes
) PURE
;
309 STDMETHOD(GetValue
)(THIS_ D3DXHANDLE parameter
, LPVOID data
, UINT bytes
) PURE
;
310 STDMETHOD(SetBool
)(THIS_ D3DXHANDLE parameter
, BOOL b
) PURE
;
311 STDMETHOD(GetBool
)(THIS_ D3DXHANDLE parameter
, BOOL
* b
) PURE
;
312 STDMETHOD(SetBoolArray
)(THIS_ D3DXHANDLE parameter
, CONST BOOL
* b
, UINT count
) PURE
;
313 STDMETHOD(GetBoolArray
)(THIS_ D3DXHANDLE parameter
, BOOL
* b
, UINT count
) PURE
;
314 STDMETHOD(SetInt
)(THIS_ D3DXHANDLE parameter
, INT n
) PURE
;
315 STDMETHOD(GetInt
)(THIS_ D3DXHANDLE parameter
, INT
* n
) PURE
;
316 STDMETHOD(SetIntArray
)(THIS_ D3DXHANDLE parameter
, CONST INT
* n
, UINT count
) PURE
;
317 STDMETHOD(GetIntArray
)(THIS_ D3DXHANDLE parameter
, INT
* n
, UINT count
) PURE
;
318 STDMETHOD(SetFloat
)(THIS_ D3DXHANDLE parameter
, FLOAT f
) PURE
;
319 STDMETHOD(GetFloat
)(THIS_ D3DXHANDLE parameter
, FLOAT
* f
) PURE
;
320 STDMETHOD(SetFloatArray
)(THIS_ D3DXHANDLE parameter
, CONST FLOAT
* f
, UINT count
) PURE
;
321 STDMETHOD(GetFloatArray
)(THIS_ D3DXHANDLE parameter
, FLOAT
* f
, UINT count
) PURE
;
322 STDMETHOD(SetVector
)(THIS_ D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
) PURE
;
323 STDMETHOD(GetVector
)(THIS_ D3DXHANDLE parameter
, D3DXVECTOR4
* vector
) PURE
;
324 STDMETHOD(SetVectorArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
, UINT count
) PURE
;
325 STDMETHOD(GetVectorArray
)(THIS_ D3DXHANDLE parameter
, D3DXVECTOR4
* vector
, UINT count
) PURE
;
326 STDMETHOD(SetMatrix
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
) PURE
;
327 STDMETHOD(GetMatrix
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
) PURE
;
328 STDMETHOD(SetMatrixArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
) PURE
;
329 STDMETHOD(GetMatrixArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
) PURE
;
330 STDMETHOD(SetMatrixPointerArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
) PURE
;
331 STDMETHOD(GetMatrixPointerArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
) PURE
;
332 STDMETHOD(SetMatrixTranspose
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
) PURE
;
333 STDMETHOD(GetMatrixTranspose
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
) PURE
;
334 STDMETHOD(SetMatrixTransposeArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
) PURE
;
335 STDMETHOD(GetMatrixTransposeArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
) PURE
;
336 STDMETHOD(SetMatrixTransposePointerArray
)(THIS_ D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
) PURE
;
337 STDMETHOD(GetMatrixTransposePointerArray
)(THIS_ D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
) PURE
;
338 STDMETHOD(SetString
)(THIS_ D3DXHANDLE parameter
, LPCSTR string
) PURE
;
339 STDMETHOD(GetString
)(THIS_ D3DXHANDLE parameter
, LPCSTR
* string
) PURE
;
340 STDMETHOD(SetTexture
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9 texture
) PURE
;
341 STDMETHOD(GetTexture
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9
* texture
) PURE
;
342 STDMETHOD(SetPixelShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DPIXELSHADER9 pshader
) PURE
;
343 STDMETHOD(GetPixelShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DPIXELSHADER9
* pshader
) PURE
;
344 STDMETHOD(SetVertexShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DVERTEXSHADER9 vshader
) PURE
;
345 STDMETHOD(GetVertexShader
)(THIS_ D3DXHANDLE parameter
, LPDIRECT3DVERTEXSHADER9
* vshader
) PURE
;
346 STDMETHOD(SetArrayRange
)(THIS_ D3DXHANDLE parameter
, UINT start
, UINT end
) PURE
;
347 /*** ID3DXEffectCompiler methods ***/
348 STDMETHOD(SetLiteral
)(THIS_ D3DXHANDLE parameter
, BOOL literal
) PURE
;
349 STDMETHOD(GetLiteral
)(THIS_ D3DXHANDLE parameter
, BOOL
* literal
) PURE
;
350 STDMETHOD(CompileEffect
)(THIS_ DWORD flags
, LPD3DXBUFFER
* effect
, LPD3DXBUFFER
* error_msgs
) PURE
;
351 STDMETHOD(CompileShader
)(THIS_ D3DXHANDLE function
, LPCSTR target
, DWORD flags
, LPD3DXBUFFER
* shader
,
352 LPD3DXBUFFER
* error_msgs
, LPD3DXCONSTANTTABLE
* constant_table
) PURE
;
360 HRESULT WINAPI
D3DXCreateEffectPool(LPD3DXEFFECTPOOL
* pool
);
362 HRESULT WINAPI
D3DXCreateEffect(LPDIRECT3DDEVICE9 device
,
365 CONST D3DXMACRO
* defines
,
366 LPD3DXINCLUDE include
,
368 LPD3DXEFFECTPOOL pool
,
369 LPD3DXEFFECT
* effect
,
370 LPD3DXBUFFER
* compilation_errors
);
372 HRESULT WINAPI
D3DXCreateEffectEx(LPDIRECT3DDEVICE9 device
,
375 CONST D3DXMACRO
* defines
,
376 LPD3DXINCLUDE include
,
377 LPCSTR skip_constants
,
379 LPD3DXEFFECTPOOL pool
,
380 LPD3DXEFFECT
* effect
,
381 LPD3DXBUFFER
* compilation_errors
);
383 HRESULT WINAPI
D3DXCreateEffectCompiler(LPCSTR srcdata
,
385 CONST D3DXMACRO
* defines
,
386 LPD3DXINCLUDE include
,
388 LPD3DXEFFECTCOMPILER
* compiler
,
389 LPD3DXBUFFER
* parse_errors
);
395 #endif /* __D3DX9EFFECT_H__ */