1#include <_mingw_unicode.h> 2#undef INTERFACE 3/* 4 * Copyright 2008 Luis Busquets 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21#include "d3dx9.h" 22 23#ifndef __D3DX9SHADER_H__ 24#define __D3DX9SHADER_H__ 25 26#define D3DXSHADER_DEBUG 0x1 27#define D3DXSHADER_SKIPVALIDATION 0x2 28#define D3DXSHADER_SKIPOPTIMIZATION 0x4 29#define D3DXSHADER_PACKMATRIX_ROWMAJOR 0x8 30#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR 0x10 31#define D3DXSHADER_PARTIALPRECISION 0x20 32#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT 0x40 33#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT 0x80 34#define D3DXSHADER_NO_PRESHADER 0x100 35#define D3DXSHADER_AVOID_FLOW_CONTROL 0x200 36#define D3DXSHADER_PREFER_FLOW_CONTROL 0x400 37#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY 0x1000 38#define D3DXSHADER_IEEE_STRICTNESS 0x2000 39 40#define D3DXSHADER_OPTIMIZATION_LEVEL0 0x4000 41#define D3DXSHADER_OPTIMIZATION_LEVEL1 0x0 42#define D3DXSHADER_OPTIMIZATION_LEVEL2 0xC000 43#define D3DXSHADER_OPTIMIZATION_LEVEL3 0x8000 44 45#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL 0x10000 46 47typedef LPCSTR D3DXHANDLE; 48 49typedef enum _D3DXREGISTER_SET 50{ 51 D3DXRS_BOOL, 52 D3DXRS_INT4, 53 D3DXRS_FLOAT4, 54 D3DXRS_SAMPLER, 55 D3DXRS_FORCE_DWORD = 0x7fffffff 56} D3DXREGISTER_SET, *LPD3DXREGISTER_SET; 57 58typedef enum D3DXPARAMETER_CLASS 59{ 60 D3DXPC_SCALAR, 61 D3DXPC_VECTOR, 62 D3DXPC_MATRIX_ROWS, 63 D3DXPC_MATRIX_COLUMNS, 64 D3DXPC_OBJECT, 65 D3DXPC_STRUCT, 66 D3DXPC_FORCE_DWORD = 0x7fffffff, 67} D3DXPARAMETER_CLASS, *LPD3DXPARAMETER_CLASS; 68 69typedef enum D3DXPARAMETER_TYPE 70{ 71 D3DXPT_VOID, 72 D3DXPT_BOOL, 73 D3DXPT_INT, 74 D3DXPT_FLOAT, 75 D3DXPT_STRING, 76 D3DXPT_TEXTURE, 77 D3DXPT_TEXTURE1D, 78 D3DXPT_TEXTURE2D, 79 D3DXPT_TEXTURE3D, 80 D3DXPT_TEXTURECUBE, 81 D3DXPT_SAMPLER, 82 D3DXPT_SAMPLER1D, 83 D3DXPT_SAMPLER2D, 84 D3DXPT_SAMPLER3D, 85 D3DXPT_SAMPLERCUBE, 86 D3DXPT_PIXELSHADER, 87 D3DXPT_VERTEXSHADER, 88 D3DXPT_PIXELFRAGMENT, 89 D3DXPT_VERTEXFRAGMENT, 90 D3DXPT_UNSUPPORTED, 91 D3DXPT_FORCE_DWORD = 0x7fffffff, 92} D3DXPARAMETER_TYPE, *LPD3DXPARAMETER_TYPE; 93 94typedef struct _D3DXCONSTANTTABLE_DESC 95{ 96 LPCSTR Creator; 97 DWORD Version; 98 UINT Constants; 99} D3DXCONSTANTTABLE_DESC, *LPD3DXCONSTANTTABLE_DESC; 100 101typedef struct _D3DXCONSTANT_DESC 102{ 103 LPCSTR Name; 104 D3DXREGISTER_SET RegisterSet; 105 UINT RegisterIndex; 106 UINT RegisterCount; 107 D3DXPARAMETER_CLASS Class; 108 D3DXPARAMETER_TYPE Type; 109 UINT Rows; 110 UINT Columns; 111 UINT Elements; 112 UINT StructMembers; 113 UINT Bytes; 114 LPCVOID DefaultValue; 115} D3DXCONSTANT_DESC, *LPD3DXCONSTANT_DESC; 116 117DEFINE_GUID(IID_ID3DXConstantTable, 0x9dca3190, 0x38b9, 0x4fc3, 0x92, 0xe3, 0x39, 0xc6, 0xdd, 0xfb, 0x35, 0x8b); 118 119#undef INTERFACE 120#define INTERFACE ID3DXConstantTable 121 122DECLARE_INTERFACE_(ID3DXConstantTable, ID3DXBuffer) 123{ 124 /*** IUnknown methods ***/ 125 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE; 126 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 127 STDMETHOD_(ULONG, Release)(THIS) PURE; 128 /*** ID3DXBuffer methods ***/ 129 STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE; 130 STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE; 131 /*** ID3DXConstantTable methods ***/ 132 STDMETHOD(GetDesc)(THIS_ D3DXCONSTANTTABLE_DESC *pDesc) PURE; 133 STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE; 134 STDMETHOD_(UINT, GetSamplerIndex)(THIS_ D3DXHANDLE hConstant) PURE; 135 STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE; 136 STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, LPCSTR pName) PURE; 137 STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE; 138 STDMETHOD(SetDefaults)(THIS_ struct IDirect3DDevice9 *device) PURE; 139 STDMETHOD(SetValue)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 140 const void *data, UINT data_size) PURE; 141 STDMETHOD(SetBool)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, WINBOOL value) PURE; 142 STDMETHOD(SetBoolArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 143 const WINBOOL *values, UINT value_count) PURE; 144 STDMETHOD(SetInt)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, INT value) PURE; 145 STDMETHOD(SetIntArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 146 const INT *values, UINT value_count) PURE; 147 STDMETHOD(SetFloat)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, float value) PURE; 148 STDMETHOD(SetFloatArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 149 const float *values, UINT value_count) PURE; 150 STDMETHOD(SetVector)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXVECTOR4 *value) PURE; 151 STDMETHOD(SetVectorArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 152 const D3DXVECTOR4 *values, UINT value_count) PURE; 153 STDMETHOD(SetMatrix)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *value) PURE; 154 STDMETHOD(SetMatrixArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 155 const D3DXMATRIX *values, UINT value_count) PURE; 156 STDMETHOD(SetMatrixPointerArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 157 const D3DXMATRIX **values, UINT value_count) PURE; 158 STDMETHOD(SetMatrixTranspose)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 159 const D3DXMATRIX *value) PURE; 160 STDMETHOD(SetMatrixTransposeArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 161 const D3DXMATRIX *values, UINT value_count) PURE; 162 STDMETHOD(SetMatrixTransposePointerArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, 163 const D3DXMATRIX **values, UINT value_count) PURE; 164}; 165#undef INTERFACE 166 167#if !defined(__cplusplus) || defined(CINTERFACE) 168/*** IUnknown methods ***/ 169#define ID3DXConstantTable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 170#define ID3DXConstantTable_AddRef(p) (p)->lpVtbl->AddRef(p) 171#define ID3DXConstantTable_Release(p) (p)->lpVtbl->Release(p) 172/*** ID3DXBuffer methods ***/ 173#define ID3DXConstantTable_GetBufferPointer(p) (p)->lpVtbl->GetBufferPointer(p) 174#define ID3DXConstantTable_GetBufferSize(p) (p)->lpVtbl->GetBufferSize(p) 175/*** ID3DXConstantTable methods ***/ 176#define ID3DXConstantTable_GetDesc(p,a) (p)->lpVtbl->GetDesc(p,a) 177#define ID3DXConstantTable_GetConstantDesc(p,a,b,c) (p)->lpVtbl->GetConstantDesc(p,a,b,c) 178#define ID3DXConstantTable_GetSamplerIndex(p,a) (p)->lpVtbl->GetSamplerIndex(p,a) 179#define ID3DXConstantTable_GetConstant(p,a,b) (p)->lpVtbl->GetConstant(p,a,b) 180#define ID3DXConstantTable_GetConstantByName(p,a,b) (p)->lpVtbl->GetConstantByName(p,a,b) 181#define ID3DXConstantTable_GetConstantElement(p,a,b) (p)->lpVtbl->GetConstantElement(p,a,b) 182#define ID3DXConstantTable_SetDefaults(p,a) (p)->lpVtbl->SetDefaults(p,a) 183#define ID3DXConstantTable_SetValue(p,a,b,c,d) (p)->lpVtbl->SetValue(p,a,b,c,d) 184#define ID3DXConstantTable_SetBool(p,a,b,c) (p)->lpVtbl->SetBool(p,a,b,c) 185#define ID3DXConstantTable_SetBoolArray(p,a,b,c,d) (p)->lpVtbl->SetBoolArray(p,a,b,c,d) 186#define ID3DXConstantTable_SetInt(p,a,b,c) (p)->lpVtbl->SetInt(p,a,b,c) 187#define ID3DXConstantTable_SetIntArray(p,a,b,c,d) (p)->lpVtbl->SetIntArray(p,a,b,c,d) 188#define ID3DXConstantTable_SetFloat(p,a,b,c) (p)->lpVtbl->SetFloat(p,a,b,c) 189#define ID3DXConstantTable_SetFloatArray(p,a,b,c,d) (p)->lpVtbl->SetFloatArray(p,a,b,c,d) 190#define ID3DXConstantTable_SetVector(p,a,b,c) (p)->lpVtbl->SetVector(p,a,b,c) 191#define ID3DXConstantTable_SetVectorArray(p,a,b,c,d) (p)->lpVtbl->SetVectorArray(p,a,b,c,d) 192#define ID3DXConstantTable_SetMatrix(p,a,b,c) (p)->lpVtbl->SetMatrix(p,a,b,c) 193#define ID3DXConstantTable_SetMatrixArray(p,a,b,c,d) (p)->lpVtbl->SetMatrixArray(p,a,b,c,d) 194#define ID3DXConstantTable_SetMatrixPointerArray(p,a,b,c,d) (p)->lpVtbl->SetMatrixPointerArray(p,a,b,c,d) 195#define ID3DXConstantTable_SetMatrixTranspose(p,a,b,c) (p)->lpVtbl->SetMatrixTranspose(p,a,b,c) 196#define ID3DXConstantTable_SetMatrixTransposeArray(p,a,b,c,d) (p)->lpVtbl->SetMatrixTransposeArray(p,a,b,c,d) 197#define ID3DXConstantTable_SetMatrixTransposePointerArray(p,a,b,c,d) (p)->lpVtbl->SetMatrixTransposePointerArray(p,a,b,c,d) 198#else 199/*** IUnknown methods ***/ 200#define ID3DXConstantTable_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 201#define ID3DXConstantTable_AddRef(p) (p)->AddRef() 202#define ID3DXConstantTable_Release(p) (p)->Release() 203/*** ID3DXBuffer methods ***/ 204#define ID3DXConstantTable_GetBufferPointer(p) (p)->GetBufferPointer() 205#define ID3DXConstantTable_GetBufferSize(p) (p)->GetBufferSize() 206/*** ID3DXConstantTable methods ***/ 207#define ID3DXConstantTable_GetDesc(p,a) (p)->GetDesc(a) 208#define ID3DXConstantTable_GetConstantDesc(p,a,b,c) (p)->GetConstantDesc(a,b,c) 209#define ID3DXConstantTable_GetSamplerIndex(p,a) (p)->GetConstantDesc(a) 210#define ID3DXConstantTable_GetConstant(p,a,b) (p)->GetConstant(a,b) 211#define ID3DXConstantTable_GetConstantByName(p,a,b) (p)->GetConstantByName(a,b) 212#define ID3DXConstantTable_GetConstantElement(p,a,b) (p)->GetConstantElement(a,b) 213#define ID3DXConstantTable_SetDefaults(p,a) (p)->SetDefaults(a) 214#define ID3DXConstantTable_SetValue(p,a,b,c,d) (p)->SetValue(a,b,c,d) 215#define ID3DXConstantTable_SetBool(p,a,b,c) (p)->SetBool(a,b,c) 216#define ID3DXConstantTable_SetBoolArray(p,a,b,c,d) (p)->SetBoolArray(a,b,c,d) 217#define ID3DXConstantTable_SetInt(p,a,b,c) (p)->SetInt(a,b,c) 218#define ID3DXConstantTable_SetIntArray(p,a,b,c,d) (p)->SetIntArray(a,b,c,d) 219#define ID3DXConstantTable_SetFloat(p,a,b,c) (p)->SetFloat(a,b,c) 220#define ID3DXConstantTable_SetFloatArray(p,a,b,c,d) (p)->SetFloatArray(a,b,c,d) 221#define ID3DXConstantTable_SetVector(p,a,b,c) (p)->SetVector(a,b,c) 222#define ID3DXConstantTable_SetVectorArray(p,a,b,c,d) (p)->SetVectorArray(a,b,c,d) 223#define ID3DXConstantTable_SetMatrix(p,a,b,c) (p)->SetMatrix(a,b,c) 224#define ID3DXConstantTable_SetMatrixArray(p,a,b,c,d) (p)->SetMatrixArray(a,b,c,d) 225#define ID3DXConstantTable_SetMatrixPointerArray(p,a,b,c,d) (p)->SetMatrixPointerArray(a,b,c,d) 226#define ID3DXConstantTable_SetMatrixTranspose(p,a,b,c) (p)->SetMatrixTranspose(a,b,c) 227#define ID3DXConstantTable_SetMatrixTransposeArray(p,a,b,c,d) (p)->SetMatrixTransposeArray(a,b,c,d) 228#define ID3DXConstantTable_SetMatrixTransposePointerArray(p,a,b,c,d) (p)->SetMatrixTransposePointerArray(a,b,c,d) 229#endif 230 231typedef struct ID3DXConstantTable *LPD3DXCONSTANTTABLE; 232 233typedef struct _D3DXMACRO { 234 LPCSTR Name; 235 LPCSTR Definition; 236} D3DXMACRO, *LPD3DXMACRO; 237 238typedef struct _D3DXSEMANTIC { 239 UINT Usage; 240 UINT UsageIndex; 241} D3DXSEMANTIC, *LPD3DXSEMANTIC; 242 243typedef enum _D3DXINCLUDE_TYPE 244{ 245 D3DXINC_LOCAL, 246 D3DXINC_SYSTEM, 247 D3DXINC_FORCE_DWORD = 0x7fffffff, 248} D3DXINCLUDE_TYPE, *LPD3DXINCLUDE_TYPE; 249 250#define INTERFACE ID3DXInclude 251 252DECLARE_INTERFACE(ID3DXInclude) 253{ 254 STDMETHOD(Open)(THIS_ D3DXINCLUDE_TYPE include_type, LPCSTR filename, LPCVOID parent_data, LPCVOID *data, UINT *bytes) PURE; 255 STDMETHOD(Close)(THIS_ LPCVOID data) PURE; 256}; 257#undef INTERFACE 258 259#define ID3DXInclude_Open(p,a,b,c,d,e) (p)->lpVtbl->Open(p,a,b,c,d,e) 260#define ID3DXInclude_Close(p,a) (p)->lpVtbl->Close(p,a) 261 262typedef struct ID3DXInclude *LPD3DXINCLUDE; 263 264#ifdef __cplusplus 265extern "C" { 266#endif 267 268const char * WINAPI D3DXGetPixelShaderProfile(struct IDirect3DDevice9 *device); 269UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code); 270DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code); 271const char * WINAPI D3DXGetVertexShaderProfile(struct IDirect3DDevice9 *device); 272HRESULT WINAPI D3DXFindShaderComment(CONST DWORD* byte_code, DWORD fourcc, LPCVOID* data, UINT* size); 273HRESULT WINAPI D3DXGetShaderSamplers(CONST DWORD *byte_code, LPCSTR *samplers, UINT *count); 274 275HRESULT WINAPI D3DXAssembleShaderFromFileA(const char *filename, const D3DXMACRO *defines, 276 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 277HRESULT WINAPI D3DXAssembleShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, 278 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 279#define D3DXAssembleShaderFromFile __MINGW_NAME_AW(D3DXAssembleShaderFromFile) 280 281HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, 282 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 283HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE module, const WCHAR *resource, const D3DXMACRO *defines, 284 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 285#define D3DXAssembleShaderFromResource __MINGW_NAME_AW(D3DXAssembleShaderFromResource) 286 287HRESULT WINAPI D3DXAssembleShader(const char *data, UINT data_len, const D3DXMACRO *defines, 288 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 289 290HRESULT WINAPI D3DXCompileShader(const char *src_data, UINT data_len, const D3DXMACRO *defines, 291 ID3DXInclude *include, const char *function_name, const char *profile, DWORD flags, 292 ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table); 293 294HRESULT WINAPI D3DXCompileShaderFromFileA(const char *filename, const D3DXMACRO *defines, 295 ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, 296 ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table); 297HRESULT WINAPI D3DXCompileShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, 298 ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, 299 ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table); 300#define D3DXCompileShaderFromFile __MINGW_NAME_AW(D3DXCompileShaderFromFile) 301 302HRESULT WINAPI D3DXCompileShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, 303 ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, 304 ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table); 305HRESULT WINAPI D3DXCompileShaderFromResourceW(HMODULE module, const WCHAR *resource, const D3DXMACRO *defines, 306 ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, 307 ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table); 308#define D3DXCompileShaderFromResource __MINGW_NAME_AW(D3DXCompileShaderFromResource) 309 310HRESULT WINAPI D3DXPreprocessShader(const char *data, UINT data_len, const D3DXMACRO *defines, 311 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 312 313HRESULT WINAPI D3DXPreprocessShaderFromFileA(const char *filename, const D3DXMACRO *defines, 314 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 315HRESULT WINAPI D3DXPreprocessShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, 316 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 317#define D3DXPreprocessShaderFromFile __MINGW_NAME_AW(D3DXPreprocessShaderFromFile) 318 319HRESULT WINAPI D3DXPreprocessShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, 320 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 321HRESULT WINAPI D3DXPreprocessShaderFromResourceW(HMODULE module, const WCHAR *resource, const D3DXMACRO *defines, 322 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 323#define D3DXPreprocessShaderFromResource __MINGW_NAME_AW(D3DXPreprocessShaderFromResource) 324 325HRESULT WINAPI D3DXGetShaderConstantTableEx(const DWORD *byte_code, DWORD flags, ID3DXConstantTable **constant_table); 326 327HRESULT WINAPI D3DXGetShaderConstantTable(const DWORD *byte_code, ID3DXConstantTable **constant_table); 328 329#ifdef __cplusplus 330} 331#endif 332 333typedef struct _D3DXSHADER_CONSTANTTABLE 334{ 335 DWORD Size; 336 DWORD Creator; 337 DWORD Version; 338 DWORD Constants; 339 DWORD ConstantInfo; 340 DWORD Flags; 341 DWORD Target; 342} D3DXSHADER_CONSTANTTABLE, *LPD3DXSHADER_CONSTANTTABLE; 343 344typedef struct _D3DXSHADER_CONSTANTINFO 345{ 346 DWORD Name; 347 WORD RegisterSet; 348 WORD RegisterIndex; 349 WORD RegisterCount; 350 WORD Reserved; 351 DWORD TypeInfo; 352 DWORD DefaultValue; 353} D3DXSHADER_CONSTANTINFO, *LPD3DXSHADER_CONSTANTINFO; 354 355typedef struct _D3DXSHADER_TYPEINFO 356{ 357 WORD Class; 358 WORD Type; 359 WORD Rows; 360 WORD Columns; 361 WORD Elements; 362 WORD StructMembers; 363 DWORD StructMemberInfo; 364} D3DXSHADER_TYPEINFO, *LPD3DXSHADER_TYPEINFO; 365 366typedef struct _D3DXSHADER_STRUCTMEMBERINFO 367{ 368 DWORD Name; 369 DWORD TypeInfo; 370} D3DXSHADER_STRUCTMEMBERINFO, *LPD3DXSHADER_STRUCTMEMBERINFO; 371 372#endif /* __D3DX9SHADER_H__ */ 373