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 47 typedef LPCSTR D3DXHANDLE; 48 49 typedef 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 58 typedef 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 69 typedef 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 94 typedef struct _D3DXCONSTANTTABLE_DESC 95 { 96 LPCSTR Creator; 97 DWORD Version; 98 UINT Constants; 99 } D3DXCONSTANTTABLE_DESC, *LPD3DXCONSTANTTABLE_DESC; 100 101 typedef 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 117 DEFINE_GUID(IID_ID3DXConstantTable, 0x9dca3190, 0x38b9, 0x4fc3, 0x92, 0xe3, 0x39, 0xc6, 0xdd, 0xfb, 0x35, 0x8b); 118 119 #undef INTERFACE 120 #define INTERFACE ID3DXConstantTable 121 122 DECLARE_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 231 typedef struct ID3DXConstantTable *LPD3DXCONSTANTTABLE; 232 233 typedef struct _D3DXMACRO { 234 LPCSTR Name; 235 LPCSTR Definition; 236 } D3DXMACRO, *LPD3DXMACRO; 237 238 typedef struct _D3DXSEMANTIC { 239 UINT Usage; 240 UINT UsageIndex; 241 } D3DXSEMANTIC, *LPD3DXSEMANTIC; 242 243 typedef 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 252 DECLARE_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 262 typedef struct ID3DXInclude *LPD3DXINCLUDE; 263 264 #ifdef __cplusplus 265 extern "C" { 266 #endif 267 268 const char * WINAPI D3DXGetPixelShaderProfile(struct IDirect3DDevice9 *device); 269 UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code); 270 DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code); 271 const char * WINAPI D3DXGetVertexShaderProfile(struct IDirect3DDevice9 *device); 272 HRESULT WINAPI D3DXFindShaderComment(CONST DWORD* byte_code, DWORD fourcc, LPCVOID* data, UINT* size); 273 HRESULT WINAPI D3DXGetShaderSamplers(CONST DWORD *byte_code, LPCSTR *samplers, UINT *count); 274 275 HRESULT WINAPI D3DXAssembleShaderFromFileA(const char *filename, const D3DXMACRO *defines, 276 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 277 HRESULT 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 281 HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, 282 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 283 HRESULT 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 287 HRESULT WINAPI D3DXAssembleShader(const char *data, UINT data_len, const D3DXMACRO *defines, 288 ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 289 290 HRESULT 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 294 HRESULT 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); 297 HRESULT 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 302 HRESULT 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); 305 HRESULT 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 310 HRESULT WINAPI D3DXPreprocessShader(const char *data, UINT data_len, const D3DXMACRO *defines, 311 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 312 313 HRESULT WINAPI D3DXPreprocessShaderFromFileA(const char *filename, const D3DXMACRO *defines, 314 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 315 HRESULT WINAPI D3DXPreprocessShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, 316 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 317 #define D3DXPreprocessShaderFromFile __MINGW_NAME_AW(D3DXPreprocessShaderFromFile) 318 319 HRESULT WINAPI D3DXPreprocessShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, 320 ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages); 321 HRESULT 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 325 HRESULT WINAPI D3DXGetShaderConstantTableEx(const DWORD *byte_code, DWORD flags, ID3DXConstantTable **constant_table); 326 327 HRESULT WINAPI D3DXGetShaderConstantTable(const DWORD *byte_code, ID3DXConstantTable **constant_table); 328 329 #ifdef __cplusplus 330 } 331 #endif 332 333 typedef 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 344 typedef 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 355 typedef 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 366 typedef struct _D3DXSHADER_STRUCTMEMBERINFO 367 { 368 DWORD Name; 369 DWORD TypeInfo; 370 } D3DXSHADER_STRUCTMEMBERINFO, *LPD3DXSHADER_STRUCTMEMBERINFO; 371 372 #endif /* __D3DX9SHADER_H__ */ 373