dsrc isn't necessary for this repo
[client-tools.git] / src / external / 3rd / library / directx9 / include / d3dx9effect.h
blob3359a1d573f9f35d7b9dfa9f1d9bf7f4d50d2e90
2 //////////////////////////////////////////////////////////////////////////////
3 //
4 // Copyright (c) Microsoft Corporation. All rights reserved.
5 //
6 // File: d3dx9effect.h
7 // Content: D3DX effect types and Shaders
8 //
9 //////////////////////////////////////////////////////////////////////////////
11 #include "d3dx9.h"
13 #ifndef __D3DX9EFFECT_H__
14 #define __D3DX9EFFECT_H__
17 //----------------------------------------------------------------------------
18 // D3DXFX_DONOTSAVESTATE
19 // This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
20 // is specified, device state is not saved or restored in Begin/End.
21 // D3DXFX_DONOTSAVESHADERSTATE
22 // This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
23 // is specified, shader device state is not saved or restored in Begin/End.
24 // This includes pixel/vertex shaders and shader constants
25 // D3DXFX_DONOTSAVESAMPLERSTATE
26 // This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
27 // is specified, sampler device state is not saved or restored in Begin/End.
28 //----------------------------------------------------------------------------
30 #define D3DXFX_DONOTSAVESTATE (1 << 0)
31 #define D3DXFX_DONOTSAVESHADERSTATE (1 << 1)
32 #define D3DXFX_DONOTSAVESAMPLERSTATE (1 << 2)
35 //----------------------------------------------------------------------------
36 // D3DX_PARAMETER_SHARED
37 // Indicates that the value of a parameter will be shared with all effects
38 // which share the same namespace. Changing the value in one effect will
39 // change it in all.
41 // D3DX_PARAMETER_LITERAL
42 // Indicates that the value of this parameter can be treated as literal.
43 // Literal parameters can be marked when the effect is compiled, and their
44 // cannot be changed after the effect is compiled. Shared parameters cannot
45 // be literal.
46 //----------------------------------------------------------------------------
48 #define D3DX_PARAMETER_SHARED (1 << 0)
49 #define D3DX_PARAMETER_LITERAL (1 << 1)
50 #define D3DX_PARAMETER_ANNOTATION (1 << 2)
53 //----------------------------------------------------------------------------
54 // D3DXEFFECT_DESC:
55 //----------------------------------------------------------------------------
57 typedef struct _D3DXEFFECT_DESC
59 LPCSTR Creator; // Creator string
60 UINT Parameters; // Number of parameters
61 UINT Techniques; // Number of techniques
62 UINT Functions; // Number of function entrypoints
64 } D3DXEFFECT_DESC;
67 //----------------------------------------------------------------------------
68 // D3DXPARAMETER_DESC:
69 //----------------------------------------------------------------------------
71 typedef struct _D3DXPARAMETER_DESC
73 LPCSTR Name; // Parameter name
74 LPCSTR Semantic; // Parameter semantic
75 D3DXPARAMETER_CLASS Class; // Class
76 D3DXPARAMETER_TYPE Type; // Component type
77 UINT Rows; // Number of rows
78 UINT Columns; // Number of columns
79 UINT Elements; // Number of array elements
80 UINT Annotations; // Number of annotations
81 UINT StructMembers; // Number of structure member sub-parameters
82 DWORD Flags; // D3DX_PARAMETER_* flags
83 UINT Bytes; // Parameter size, in bytes
85 } D3DXPARAMETER_DESC;
88 //----------------------------------------------------------------------------
89 // D3DXTECHNIQUE_DESC:
90 //----------------------------------------------------------------------------
92 typedef struct _D3DXTECHNIQUE_DESC
94 LPCSTR Name; // Technique name
95 UINT Passes; // Number of passes
96 UINT Annotations; // Number of annotations
98 } D3DXTECHNIQUE_DESC;
101 //----------------------------------------------------------------------------
102 // D3DXPASS_DESC:
103 //----------------------------------------------------------------------------
105 typedef struct _D3DXPASS_DESC
107 LPCSTR Name; // Pass name
108 UINT Annotations; // Number of annotations
110 CONST DWORD *pVertexShaderFunction; // Vertex shader function
111 CONST DWORD *pPixelShaderFunction; // Pixel shader function
113 } D3DXPASS_DESC;
116 //----------------------------------------------------------------------------
117 // D3DXFUNCTION_DESC:
118 //----------------------------------------------------------------------------
120 typedef struct _D3DXFUNCTION_DESC
122 LPCSTR Name; // Function name
123 UINT Annotations; // Number of annotations
125 } D3DXFUNCTION_DESC;
129 //////////////////////////////////////////////////////////////////////////////
130 // ID3DXEffectPool ///////////////////////////////////////////////////////////
131 //////////////////////////////////////////////////////////////////////////////
133 typedef interface ID3DXEffectPool ID3DXEffectPool;
134 typedef interface ID3DXEffectPool *LPD3DXEFFECTPOOL;
136 // {9537AB04-3250-412e-8213-FCD2F8677933}
137 DEFINE_GUID(IID_ID3DXEffectPool,
138 0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
141 #undef INTERFACE
142 #define INTERFACE ID3DXEffectPool
144 DECLARE_INTERFACE_(ID3DXEffectPool, IUnknown)
146 // IUnknown
147 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
148 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
149 STDMETHOD_(ULONG, Release)(THIS) PURE;
151 // No public methods
155 //////////////////////////////////////////////////////////////////////////////
156 // ID3DXBaseEffect ///////////////////////////////////////////////////////////
157 //////////////////////////////////////////////////////////////////////////////
159 typedef interface ID3DXBaseEffect ID3DXBaseEffect;
160 typedef interface ID3DXBaseEffect *LPD3DXBASEEFFECT;
162 // {3B7A6FFB-3A69-46d7-BC01-A6B2AD4C2BB0}
163 DEFINE_GUID(IID_ID3DXBaseEffect,
164 0x3b7a6ffb, 0x3a69, 0x46d7, 0xbc, 0x1, 0xa6, 0xb2, 0xad, 0x4c, 0x2b, 0xb0);
167 #undef INTERFACE
168 #define INTERFACE ID3DXBaseEffect
170 DECLARE_INTERFACE_(ID3DXBaseEffect, IUnknown)
172 // IUnknown
173 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
174 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
175 STDMETHOD_(ULONG, Release)(THIS) PURE;
177 // Descs
178 STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
179 STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
180 STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
181 STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
182 STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
184 // Handle operations
185 STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
186 STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
187 STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
188 STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
189 STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
190 STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
191 STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
192 STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
193 STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
194 STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
195 STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
196 STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
198 // Get/Set Parameters
199 STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
200 STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
201 STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
202 STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
203 STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
204 STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
205 STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
206 STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
207 STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
208 STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
209 STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
210 STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
211 STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
212 STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
213 STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
214 STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
215 STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
216 STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
217 STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
218 STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
219 STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
220 STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
221 STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
222 STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
223 STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
224 STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
225 STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
226 STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
227 STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
228 STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
229 STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
230 STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
231 STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
232 STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
233 STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 pPShader) PURE;
234 STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
235 STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 pVShader) PURE;
236 STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
238 //Set Range of an Array to pass to device
239 //Useful for sending only a subrange of an array down to the device
240 STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
245 //----------------------------------------------------------------------------
246 // ID3DXEffectStateManager:
247 // ------------------------
248 // This is a user implemented interface that can be used to manage device
249 // state changes made by an Effect.
250 //----------------------------------------------------------------------------
252 typedef interface ID3DXEffectStateManager ID3DXEffectStateManager;
253 typedef interface ID3DXEffectStateManager *LPD3DXEFFECTSTATEMANAGER;
255 // {79AAB587-6DBC-4fa7-82DE-37FA1781C5CE}
256 DEFINE_GUID(IID_ID3DXEffectStateManager,
257 0x79aab587, 0x6dbc, 0x4fa7, 0x82, 0xde, 0x37, 0xfa, 0x17, 0x81, 0xc5, 0xce);
259 #undef INTERFACE
260 #define INTERFACE ID3DXEffectStateManager
262 DECLARE_INTERFACE_(ID3DXEffectStateManager, IUnknown)
264 // The user must correctly implement QueryInterface, AddRef, and Release.
266 // IUnknown
267 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
268 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
269 STDMETHOD_(ULONG, Release)(THIS) PURE;
271 // The following methods are called by the Effect when it wants to make
272 // the corresponding device call. Note that:
273 // 1. Users manage the state and are therefore responsible for making the
274 // the corresponding device calls themselves inside their callbacks.
275 // 2. Effects pay attention to the return values of the callbacks, and so
276 // users must pay attention to what they return in their callbacks.
278 STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX *pMatrix) PURE;
279 STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9 *pMaterial) PURE;
280 STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9 *pLight) PURE;
281 STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
282 STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
283 STDMETHOD(SetTexture)(THIS_ DWORD Stage, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
284 STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
285 STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
286 STDMETHOD(SetNPatchMode)(THIS_ FLOAT NumSegments) PURE;
287 STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
288 STDMETHOD(SetVertexShader)(THIS_ LPDIRECT3DVERTEXSHADER9 pShader) PURE;
289 STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
290 STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
291 STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
292 STDMETHOD(SetPixelShader)(THIS_ LPDIRECT3DPIXELSHADER9 pShader) PURE;
293 STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
294 STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
295 STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
299 //////////////////////////////////////////////////////////////////////////////
300 // ID3DXEffect ///////////////////////////////////////////////////////////////
301 //////////////////////////////////////////////////////////////////////////////
303 typedef interface ID3DXEffect ID3DXEffect;
304 typedef interface ID3DXEffect *LPD3DXEFFECT;
306 // {0F0DCC9F-6152-4117-A933-FFAC29C43AA4}
307 DEFINE_GUID(IID_ID3DXEffect,
308 0xf0dcc9f, 0x6152, 0x4117, 0xa9, 0x33, 0xff, 0xac, 0x29, 0xc4, 0x3a, 0xa4);
310 #undef INTERFACE
311 #define INTERFACE ID3DXEffect
313 DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
315 // ID3DXBaseEffect
316 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
317 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
318 STDMETHOD_(ULONG, Release)(THIS) PURE;
320 // Descs
321 STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
322 STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
323 STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
324 STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
325 STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
327 // Handle operations
328 STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
329 STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
330 STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
331 STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
332 STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
333 STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
334 STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
335 STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
336 STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
337 STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
338 STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
339 STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
341 // Get/Set Parameters
342 STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
343 STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
344 STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
345 STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
346 STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
347 STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
348 STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
349 STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
350 STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
351 STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
352 STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
353 STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
354 STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
355 STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
356 STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
357 STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
358 STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
359 STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
360 STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
361 STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
362 STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
363 STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
364 STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
365 STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
366 STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
367 STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
368 STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
369 STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
370 STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
371 STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
372 STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
373 STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
374 STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
375 STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
376 STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 pPShader) PURE;
377 STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
378 STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 pVShader) PURE;
379 STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
381 //Set Range of an Array to pass to device
382 //Usefull for sending only a subrange of an array down to the device
383 STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
384 // ID3DXBaseEffect
387 // Pool
388 STDMETHOD(GetPool)(THIS_ LPD3DXEFFECTPOOL* ppPool) PURE;
390 // Selecting and setting a technique
391 STDMETHOD(SetTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
392 STDMETHOD_(D3DXHANDLE, GetCurrentTechnique)(THIS) PURE;
393 STDMETHOD(ValidateTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
394 STDMETHOD(FindNextValidTechnique)(THIS_ D3DXHANDLE hTechnique, D3DXHANDLE *pTechnique) PURE;
395 STDMETHOD_(BOOL, IsParameterUsed)(THIS_ D3DXHANDLE hParameter, D3DXHANDLE hTechnique) PURE;
397 // Using current technique
398 // Begin starts active technique
399 // BeginPass begins a pass
400 // CommitChanges updates changes to any set calls in the pass. This should be called before
401 // any DrawPrimitive call to d3d
402 // EndPass ends a pass
403 // End ends active technique
404 STDMETHOD(Begin)(THIS_ UINT *pPasses, DWORD Flags) PURE;
405 STDMETHOD(BeginPass)(THIS_ UINT Pass) PURE;
406 STDMETHOD(CommitChanges)(THIS) PURE;
407 STDMETHOD(EndPass)(THIS) PURE;
408 STDMETHOD(End)(THIS) PURE;
410 // Managing D3D Device
411 STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
412 STDMETHOD(OnLostDevice)(THIS) PURE;
413 STDMETHOD(OnResetDevice)(THIS) PURE;
415 // Logging device calls
416 STDMETHOD(SetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER pManager) PURE;
417 STDMETHOD(GetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER *ppManager) PURE;
419 // Parameter blocks
420 STDMETHOD(BeginParameterBlock)(THIS) PURE;
421 STDMETHOD_(D3DXHANDLE, EndParameterBlock)(THIS) PURE;
422 STDMETHOD(ApplyParameterBlock)(THIS_ D3DXHANDLE hParameterBlock) PURE;
424 // Cloning
425 STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE9 pDevice, LPD3DXEFFECT* ppEffect) PURE;
429 //////////////////////////////////////////////////////////////////////////////
430 // ID3DXEffectCompiler ///////////////////////////////////////////////////////
431 //////////////////////////////////////////////////////////////////////////////
433 typedef interface ID3DXEffectCompiler ID3DXEffectCompiler;
434 typedef interface ID3DXEffectCompiler *LPD3DXEFFECTCOMPILER;
436 // {15A709EB-5A8E-40a0-86A9-0C024124339B}
437 DEFINE_GUID(IID_ID3DXEffectCompiler,
438 0x15a709eb, 0x5a8e, 0x40a0, 0x86, 0xa9, 0xc, 0x2, 0x41, 0x24, 0x33, 0x9b);
441 #undef INTERFACE
442 #define INTERFACE ID3DXEffectCompiler
444 DECLARE_INTERFACE_(ID3DXEffectCompiler, ID3DXBaseEffect)
446 // ID3DXBaseEffect
447 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
448 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
449 STDMETHOD_(ULONG, Release)(THIS) PURE;
451 // Descs
452 STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
453 STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
454 STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
455 STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
456 STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
458 // Handle operations
459 STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
460 STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
461 STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
462 STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
463 STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
464 STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
465 STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
466 STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
467 STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
468 STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
469 STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
470 STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
472 // Get/Set Parameters
473 STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
474 STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
475 STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
476 STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
477 STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
478 STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
479 STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
480 STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
481 STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
482 STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
483 STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
484 STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
485 STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
486 STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
487 STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
488 STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
489 STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
490 STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
491 STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
492 STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
493 STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
494 STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
495 STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
496 STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
497 STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
498 STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
499 STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
500 STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
501 STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
502 STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
503 STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
504 STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
505 STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
506 STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
507 STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 pPShader) PURE;
508 STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
509 STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 pVShader) PURE;
510 STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
512 //Set Range of an Array to pass to device
513 //Usefull for sending only a subrange of an array down to the device
514 STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
515 // ID3DXBaseEffect
517 // Parameter sharing, specialization, and information
518 STDMETHOD(SetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL Literal) PURE;
519 STDMETHOD(GetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL *pLiteral) PURE;
521 // Compilation
522 STDMETHOD(CompileEffect)(THIS_ DWORD Flags,
523 LPD3DXBUFFER* ppEffect, LPD3DXBUFFER* ppErrorMsgs) PURE;
525 STDMETHOD(CompileShader)(THIS_ D3DXHANDLE hFunction, LPCSTR pTarget, DWORD Flags,
526 LPD3DXBUFFER* ppShader, LPD3DXBUFFER* ppErrorMsgs, LPD3DXCONSTANTTABLE* ppConstantTable) PURE;
530 //////////////////////////////////////////////////////////////////////////////
531 // APIs //////////////////////////////////////////////////////////////////////
532 //////////////////////////////////////////////////////////////////////////////
535 #ifdef __cplusplus
536 extern "C" {
537 #endif //__cplusplus
539 //----------------------------------------------------------------------------
540 // D3DXCreateEffectPool:
541 // ---------------------
542 // Creates an effect pool. Pools are used for sharing parameters between
543 // multiple effects. For all effects within a pool, shared parameters of the
544 // same name all share the same value.
546 // Parameters:
547 // ppPool
548 // Returns the created pool.
549 //----------------------------------------------------------------------------
551 HRESULT WINAPI
552 D3DXCreateEffectPool(
553 LPD3DXEFFECTPOOL* ppPool);
556 //----------------------------------------------------------------------------
557 // D3DXCreateEffect:
558 // -----------------
559 // Creates an effect from an ascii or binary effect description.
561 // Parameters:
562 // pDevice
563 // Pointer of the device on which to create the effect
564 // pSrcFile
565 // Name of the file containing the effect description
566 // hSrcModule
567 // Module handle. if NULL, current module will be used.
568 // pSrcResource
569 // Resource name in module
570 // pSrcData
571 // Pointer to effect description
572 // SrcDataSize
573 // Size of the effect description in bytes
574 // pDefines
575 // Optional NULL-terminated array of preprocessor macro definitions.
576 // pInclude
577 // Optional interface pointer to use for handling #include directives.
578 // If this parameter is NULL, #includes will be honored when compiling
579 // from file, and will error when compiling from resource or memory.
580 // pPool
581 // Pointer to ID3DXEffectPool object to use for shared parameters.
582 // If NULL, no parameters will be shared.
583 // ppEffect
584 // Returns a buffer containing created effect.
585 // ppCompilationErrors
586 // Returns a buffer containing any error messages which occurred during
587 // compile. Or NULL if you do not care about the error messages.
589 //----------------------------------------------------------------------------
591 HRESULT WINAPI
592 D3DXCreateEffectFromFileA(
593 LPDIRECT3DDEVICE9 pDevice,
594 LPCSTR pSrcFile,
595 CONST D3DXMACRO* pDefines,
596 LPD3DXINCLUDE pInclude,
597 DWORD Flags,
598 LPD3DXEFFECTPOOL pPool,
599 LPD3DXEFFECT* ppEffect,
600 LPD3DXBUFFER* ppCompilationErrors);
602 HRESULT WINAPI
603 D3DXCreateEffectFromFileW(
604 LPDIRECT3DDEVICE9 pDevice,
605 LPCWSTR pSrcFile,
606 CONST D3DXMACRO* pDefines,
607 LPD3DXINCLUDE pInclude,
608 DWORD Flags,
609 LPD3DXEFFECTPOOL pPool,
610 LPD3DXEFFECT* ppEffect,
611 LPD3DXBUFFER* ppCompilationErrors);
613 #ifdef UNICODE
614 #define D3DXCreateEffectFromFile D3DXCreateEffectFromFileW
615 #else
616 #define D3DXCreateEffectFromFile D3DXCreateEffectFromFileA
617 #endif
620 HRESULT WINAPI
621 D3DXCreateEffectFromResourceA(
622 LPDIRECT3DDEVICE9 pDevice,
623 HMODULE hSrcModule,
624 LPCSTR pSrcResource,
625 CONST D3DXMACRO* pDefines,
626 LPD3DXINCLUDE pInclude,
627 DWORD Flags,
628 LPD3DXEFFECTPOOL pPool,
629 LPD3DXEFFECT* ppEffect,
630 LPD3DXBUFFER* ppCompilationErrors);
632 HRESULT WINAPI
633 D3DXCreateEffectFromResourceW(
634 LPDIRECT3DDEVICE9 pDevice,
635 HMODULE hSrcModule,
636 LPCWSTR pSrcResource,
637 CONST D3DXMACRO* pDefines,
638 LPD3DXINCLUDE pInclude,
639 DWORD Flags,
640 LPD3DXEFFECTPOOL pPool,
641 LPD3DXEFFECT* ppEffect,
642 LPD3DXBUFFER* ppCompilationErrors);
644 #ifdef UNICODE
645 #define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceW
646 #else
647 #define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceA
648 #endif
651 HRESULT WINAPI
652 D3DXCreateEffect(
653 LPDIRECT3DDEVICE9 pDevice,
654 LPCVOID pSrcData,
655 UINT SrcDataLen,
656 CONST D3DXMACRO* pDefines,
657 LPD3DXINCLUDE pInclude,
658 DWORD Flags,
659 LPD3DXEFFECTPOOL pPool,
660 LPD3DXEFFECT* ppEffect,
661 LPD3DXBUFFER* ppCompilationErrors);
665 //----------------------------------------------------------------------------
666 // D3DXCreateEffectCompiler:
667 // -------------------------
668 // Creates an effect from an ascii or binary effect description.
670 // Parameters:
671 // pSrcFile
672 // Name of the file containing the effect description
673 // hSrcModule
674 // Module handle. if NULL, current module will be used.
675 // pSrcResource
676 // Resource name in module
677 // pSrcData
678 // Pointer to effect description
679 // SrcDataSize
680 // Size of the effect description in bytes
681 // pDefines
682 // Optional NULL-terminated array of preprocessor macro definitions.
683 // pInclude
684 // Optional interface pointer to use for handling #include directives.
685 // If this parameter is NULL, #includes will be honored when compiling
686 // from file, and will error when compiling from resource or memory.
687 // pPool
688 // Pointer to ID3DXEffectPool object to use for shared parameters.
689 // If NULL, no parameters will be shared.
690 // ppCompiler
691 // Returns a buffer containing created effect compiler.
692 // ppParseErrors
693 // Returns a buffer containing any error messages which occurred during
694 // parse. Or NULL if you do not care about the error messages.
696 //----------------------------------------------------------------------------
698 HRESULT WINAPI
699 D3DXCreateEffectCompilerFromFileA(
700 LPCSTR pSrcFile,
701 CONST D3DXMACRO* pDefines,
702 LPD3DXINCLUDE pInclude,
703 DWORD Flags,
704 LPD3DXEFFECTCOMPILER* ppCompiler,
705 LPD3DXBUFFER* ppParseErrors);
707 HRESULT WINAPI
708 D3DXCreateEffectCompilerFromFileW(
709 LPCWSTR pSrcFile,
710 CONST D3DXMACRO* pDefines,
711 LPD3DXINCLUDE pInclude,
712 DWORD Flags,
713 LPD3DXEFFECTCOMPILER* ppCompiler,
714 LPD3DXBUFFER* ppParseErrors);
716 #ifdef UNICODE
717 #define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileW
718 #else
719 #define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileA
720 #endif
723 HRESULT WINAPI
724 D3DXCreateEffectCompilerFromResourceA(
725 HMODULE hSrcModule,
726 LPCSTR pSrcResource,
727 CONST D3DXMACRO* pDefines,
728 LPD3DXINCLUDE pInclude,
729 DWORD Flags,
730 LPD3DXEFFECTCOMPILER* ppCompiler,
731 LPD3DXBUFFER* ppParseErrors);
733 HRESULT WINAPI
734 D3DXCreateEffectCompilerFromResourceW(
735 HMODULE hSrcModule,
736 LPCWSTR pSrcResource,
737 CONST D3DXMACRO* pDefines,
738 LPD3DXINCLUDE pInclude,
739 DWORD Flags,
740 LPD3DXEFFECTCOMPILER* ppCompiler,
741 LPD3DXBUFFER* ppParseErrors);
743 #ifdef UNICODE
744 #define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceW
745 #else
746 #define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceA
747 #endif
750 HRESULT WINAPI
751 D3DXCreateEffectCompiler(
752 LPCSTR pSrcData,
753 UINT SrcDataLen,
754 CONST D3DXMACRO* pDefines,
755 LPD3DXINCLUDE pInclude,
756 DWORD Flags,
757 LPD3DXEFFECTCOMPILER* ppCompiler,
758 LPD3DXBUFFER* ppParseErrors);
760 //----------------------------------------------------------------------------
761 // D3DXDisassembleEffect:
762 // -----------------------
764 // Parameters:
765 //----------------------------------------------------------------------------
767 HRESULT WINAPI
768 D3DXDisassembleEffect(
769 LPD3DXEFFECT pEffect,
770 BOOL EnableColorCode,
771 LPD3DXBUFFER *ppDisassembly);
775 #ifdef __cplusplus
777 #endif //__cplusplus
779 #endif //__D3DX9EFFECT_H__