ReactOS  0.4.14-dev-57-g333b8f1
d3dx9mesh.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2009 David Adam
3  * Copyright (C) 2010 Tony Wasserka
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19 
20 #include <d3dx9.h>
21 
22 #ifndef __WINE_D3DX9MESH_H
23 #define __WINE_D3DX9MESH_H
24 
25 DEFINE_GUID(IID_ID3DXBaseMesh, 0x7ed943dd, 0x52e8, 0x40b5, 0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30);
26 DEFINE_GUID(IID_ID3DXMesh, 0x4020e5c2, 0x1403, 0x4929, 0x88, 0x3f, 0xe2, 0xe8, 0x49, 0xfa, 0xc1, 0x95);
27 DEFINE_GUID(IID_ID3DXPMesh, 0x8875769a, 0xd579, 0x4088, 0xaa, 0xeb, 0x53, 0x4d, 0x1a, 0xd8, 0x4e, 0x96);
28 DEFINE_GUID(IID_ID3DXSPMesh, 0x667ea4c7, 0xf1cd, 0x4386, 0xb5, 0x23, 0x7c, 0x02, 0x90, 0xb8, 0x3c, 0xc5);
29 DEFINE_GUID(IID_ID3DXSkinInfo, 0x11eaa540, 0xf9a6, 0x4d49, 0xae, 0x6a, 0xe1, 0x92, 0x21, 0xf7, 0x0c, 0xc4);
30 DEFINE_GUID(IID_ID3DXPatchMesh,0x3ce6cc22, 0xdbf2, 0x44f4, 0x89, 0x4d, 0xf9, 0xc3, 0x4a, 0x33, 0x71, 0x39);
31 DEFINE_GUID(IID_ID3DXPRTBuffer, 0xf1827e47, 0x00a8, 0x49cd, 0x90, 0x8c, 0x9d, 0x11, 0x95, 0x5f, 0x87, 0x28);
32 DEFINE_GUID(IID_ID3DXPRTCompBuffer, 0xa758d465, 0xfe8d, 0x45ad, 0x9c, 0xf0, 0xd0, 0x1e, 0x56, 0x26, 0x6a, 0x07);
33 DEFINE_GUID(IID_ID3DXTextureGutterHelper, 0x838f01ec, 0x9729, 0x4527, 0xaa, 0xdb, 0xdf, 0x70, 0xad, 0xe7, 0xfe, 0xa9);
34 DEFINE_GUID(IID_ID3DXPRTEngine, 0x683a4278, 0xcd5f, 0x4d24, 0x90, 0xad, 0xc4, 0xe1, 0xb6, 0x85, 0x5d, 0x53);
35 
36 #define UNUSED16 (0xffff)
37 #define UNUSED32 (0xffffffff)
38 
40 {
42 };
43 
45 {
46  D3DXMESH_32BIT = 0x001,
48  D3DXMESH_POINTS = 0x004,
68 };
69 
71 {
73  D3DXMESHOPT_COMPACT = 0x01000000,
74  D3DXMESHOPT_ATTRSORT = 0x02000000,
78  D3DXMESHOPT_DONOTSPLIT = 0x20000000,
79 };
80 
81 typedef enum _D3DXPATCHMESHTYPE
82 {
88 
90 {
92 };
93 
95 {
98 };
99 
100 typedef enum D3DXCLEANTYPE {
101  D3DXCLEAN_BACKFACING = 0x00000001,
102  D3DXCLEAN_BOWTIES = 0x00000002,
103 
107 } D3DXCLEANTYPE;
108 
109 typedef enum _D3DXTANGENT
110 {
123 } D3DXTANGENT;
124 
125 typedef enum _D3DXIMT
126 {
130 } D3DXIMT;
131 
132 typedef enum _D3DXUVATLAS
133 {
137 } D3DXUVATLAS;
138 
140 {
144  D3DXEDT_FORCEDWORD = 0x7fffffff,
146 
148 {
153 };
154 
156 {
161 
162 typedef enum _D3DXSHGPUSIMOPT
163 {
171 
172 typedef struct ID3DXBaseMesh* LPD3DXBASEMESH;
173 typedef struct ID3DXMesh* LPD3DXMESH;
174 typedef struct ID3DXPMesh *LPD3DXPMESH;
175 typedef struct ID3DXSPMesh *LPD3DXSPMESH;
176 typedef struct ID3DXSkinInfo *LPD3DXSKININFO;
177 typedef struct ID3DXPatchMesh *LPD3DXPATCHMESH;
178 typedef struct ID3DXPRTBuffer *LPD3DXPRTBUFFER;
179 typedef struct ID3DXPRTCompBuffer *LPD3DXPRTCOMPBUFFER;
180 typedef struct ID3DXPRTEngine *LPD3DXPRTENGINE;
181 typedef struct ID3DXTextureGutterHelper *LPD3DXTEXTUREGUTTERHELPER;
182 
183 typedef struct _D3DXATTRIBUTERANGE {
190 
192 
193 typedef struct _D3DXMATERIAL
194 {
198 
199 typedef struct _D3DXEFFECTDEFAULT
200 {
201  char *pParamName;
204  void *pValue;
206 
207 typedef struct _D3DXEFFECTINSTANCE
208 {
213 
214 typedef struct _D3DXATTRIBUTEWEIGHTS
215 {
225 
226 typedef struct _D3DXWELDEPSILONS
227 {
239 
240 typedef struct _D3DXBONECOMBINATION
241 {
249 
250 typedef struct _D3DXPATCHINFO
251 {
256 
257 typedef struct _D3DXINTERSECTINFO
258 {
264 
265 typedef struct _D3DXSHMATERIAL
266 {
274 
276 {
281 
283 {
291 
293 {
299 
300 typedef HRESULT (WINAPI *LPD3DXUVATLASCB)(float complete, void *ctx);
302 typedef HRESULT (WINAPI *LPD3DXSHPRTSIMCB)(float complete, void *ctx);
303 
304 #undef INTERFACE
305 #define INTERFACE ID3DXBaseMesh
306 
308 {
309  /*** IUnknown methods ***/
313  /*** ID3DXBaseMesh ***/
314  STDMETHOD(DrawSubset)(THIS_ DWORD attrib_id) PURE;
315  STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
316  STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
317  STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
319  STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
320  STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
321  STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
322  STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
323  struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
325  struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
326  STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
327  STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
328  STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, void **data) PURE;
329  STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
330  STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, void **data) PURE;
331  STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
332  STDMETHOD(GetAttributeTable)(THIS_ D3DXATTRIBUTERANGE* attrib_table, DWORD* attrib_table_size) PURE;
333  STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ const DWORD *point_reps, DWORD *adjacency) PURE;
334  STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ const DWORD *adjacency, DWORD *point_reps) PURE;
335  STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
337 };
338 #undef INTERFACE
339 
340 #define INTERFACE ID3DXMesh
341 DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
342 {
343  /*** IUnknown methods ***/
347  /*** ID3DXBaseMesh ***/
348  STDMETHOD(DrawSubset)(THIS_ DWORD attrib_id) PURE;
349  STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
350  STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
351  STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
353  STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
354  STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
355  STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
356  STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
357  struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
359  struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
360  STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
361  STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
362  STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, void **data) PURE;
363  STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
364  STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, void **data) PURE;
365  STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
366  STDMETHOD(GetAttributeTable)(THIS_ D3DXATTRIBUTERANGE* attrib_table, DWORD* attrib_table_size) PURE;
367  STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ const DWORD *point_reps, DWORD *adjacency) PURE;
368  STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ const DWORD *adjacency, DWORD *point_reps) PURE;
369  STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
371  /*** ID3DXMesh ***/
372  STDMETHOD(LockAttributeBuffer)(THIS_ DWORD flags, DWORD** data) PURE;
373  STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
374  STDMETHOD(Optimize)(THIS_ DWORD flags, const DWORD *adjacency_in, DWORD *adjacency_out,
375  DWORD *face_remap, ID3DXBuffer **vertex_remap, ID3DXMesh **opt_mesh) PURE;
376  STDMETHOD(OptimizeInplace)(THIS_ DWORD flags, const DWORD *adjacency_in, DWORD *adjacency_out,
377  DWORD *face_remap, ID3DXBuffer **vertex_remap) PURE;
378  STDMETHOD(SetAttributeTable)(THIS_ const D3DXATTRIBUTERANGE *attrib_table,
379  DWORD attrib_table_size) PURE;
380 };
381 #undef INTERFACE
382 
383 #define INTERFACE ID3DXPMesh
384 DECLARE_INTERFACE_(ID3DXPMesh, ID3DXBaseMesh)
385 {
386  /*** IUnknown methods ***/
390  /*** ID3DXBaseMesh ***/
391  STDMETHOD(DrawSubset)(THIS_ DWORD attrib_id) PURE;
392  STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
393  STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
394  STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
396  STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
397  STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
398  STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
399  STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
400  struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
402  struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
403  STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
404  STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
405  STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, void **data) PURE;
406  STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
407  STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, void **data) PURE;
408  STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
409  STDMETHOD(GetAttributeTable)(THIS_ D3DXATTRIBUTERANGE* attrib_table, DWORD* attrib_table_size) PURE;
410  STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ const DWORD *point_reps, DWORD *adjacency) PURE;
411  STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ const DWORD *adjacency, DWORD *point_reps) PURE;
412  STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
414  /*** ID3DXPMesh ***/
415  STDMETHOD(ClonePMeshFVF)(THIS_ DWORD options, DWORD fvf,
416  struct IDirect3DDevice9 *device, struct ID3DXPMesh **clone_mesh) PURE;
418  struct IDirect3DDevice9 *device, struct ID3DXPMesh **clone_mesh) PURE;
419  STDMETHOD(SetNumFaces)(THIS_ DWORD faces) PURE;
420  STDMETHOD(SetNumVertices)(THIS_ DWORD vertices) PURE;
421  STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
422  STDMETHOD_(DWORD, GetMinFaces)(THIS) PURE;
423  STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
424  STDMETHOD_(DWORD, GetMinVertices)(THIS) PURE;
425  STDMETHOD(Save)(THIS_ IStream *stream, const D3DXMATERIAL *material,
426  const D3DXEFFECTINSTANCE *effect_instance, DWORD num_materials) PURE;
427  STDMETHOD(Optimize)(THIS_ DWORD flags, DWORD *adjacency_out, DWORD *face_remap,
428  ID3DXBuffer **vertex_remap, ID3DXMesh **opt_mesh) PURE;
429  STDMETHOD(OptimizeBaseLOD)(THIS_ DWORD flags, DWORD* face_remap) PURE;
430  STDMETHOD(TrimByFaces)(THIS_ DWORD new_faces_min, DWORD new_faces_max, DWORD* face_remap, DWORD* vertex_remap) PURE;
431  STDMETHOD(TrimByVertices)(THIS_ DWORD new_vertices_min, DWORD new_vertices_max, DWORD* face_remap, DWORD* vertex_remap) PURE;
432  STDMETHOD(GetAdjacency)(THIS_ DWORD* adjacency) PURE;
433  STDMETHOD(GenerateVertexHistory)(THIS_ DWORD* vertex_history) PURE;
434 };
435 #undef INTERFACE
436 
437 #define INTERFACE ID3DXSPMesh
439 {
440  /*** IUnknown methods ***/
444  /*** ID3DXSPMesh ***/
445  STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
446  STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
447  STDMETHOD_(DWORD, GetNumFVF)(THIS) PURE;
449  STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
450  STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
451  STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
452  struct IDirect3DDevice9 *device, DWORD *adjacency_out,
453  DWORD *vertex_remap_out, struct ID3DXMesh **clone_mesh) PURE;
455  struct IDirect3DDevice9 *device, DWORD *adjacency_out,
456  DWORD *vertex_remap_out, struct ID3DXMesh **clone_mesh) PURE;
457  STDMETHOD(ClonePMeshFVF)(THIS_ DWORD options, DWORD fvf,
458  struct IDirect3DDevice9 *device, DWORD *vertex_remap_out,
459  float *errors_by_face, struct ID3DXPMesh **clone_mesh) PURE;
461  struct IDirect3DDevice9 *device, DWORD *vertex_remap_out,
462  float *errors_by_face, struct ID3DXPMesh **clone_mesh) PURE;
463  STDMETHOD(ReduceFaces)(THIS_ DWORD faces) PURE;
464  STDMETHOD(ReduceVertices)(THIS_ DWORD vertices) PURE;
465  STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
466  STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
467  STDMETHOD(GetVertexAttributeWeights)(THIS_ LPD3DXATTRIBUTEWEIGHTS vertex_attribute_weights) PURE;
468  STDMETHOD(GetVertexWeights)(THIS_ FLOAT* vertex_weights) PURE;
469 };
470 #undef INTERFACE
471 
472 #define INTERFACE ID3DXPatchMesh
473 DECLARE_INTERFACE_(ID3DXPatchMesh, IUnknown)
474 {
475  /*** IUnknown methods ***/
479  /*** ID3DXPatchMesh ***/
480  STDMETHOD_(DWORD, GetNumPatches)(THIS) PURE;
481  STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
483  STDMETHOD_(DWORD, GetControlVerticesPerPatch)(THIS) PURE;
484  STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
485  STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
486  STDMETHOD(GetPatchInfo)(THIS_ LPD3DXPATCHINFO patch_info) PURE;
487  STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
488  STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
489  STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, void **data) PURE;
490  STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
491  STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, void **data) PURE;
492  STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
493  STDMETHOD(LockAttributeBuffer)(THIS_ DWORD flags, DWORD** data) PURE;
494  STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
495  STDMETHOD(GetTessSize)(THIS_ FLOAT tess_level, DWORD adaptive, DWORD* num_triangles, DWORD* num_vertices) PURE;
496  STDMETHOD(GenerateAdjacency)(THIS_ FLOAT tolerance) PURE;
497  STDMETHOD(CloneMesh)(THIS_ DWORD options, const D3DVERTEXELEMENT9 *declaration, ID3DXPatchMesh **clone_mesh) PURE;
498  STDMETHOD(Optimize)(THIS_ DWORD flags) PURE;
499  STDMETHOD(SetDisplaceParam)(THIS_ struct IDirect3DBaseTexture9 *texture, D3DTEXTUREFILTERTYPE min_filter,
501  DWORD lod_bias) PURE;
502  STDMETHOD(GetDisplaceParam)(THIS_ struct IDirect3DBaseTexture9 **texture, D3DTEXTUREFILTERTYPE *min_filter,
504  DWORD *lod_bias) PURE;
505  STDMETHOD(Tessellate)(THIS_ float tess_level, ID3DXMesh *mesh) PURE;
506  STDMETHOD(TessellateAdaptive)(THIS_ const D3DXVECTOR4 *trans, DWORD max_tess_level,
507  DWORD min_tess_level, ID3DXMesh *mesh) PURE;
508 };
509 #undef INTERFACE
510 
511 #define INTERFACE ID3DXSkinInfo
513 {
514  /*** IUnknown methods ***/
518  /*** ID3DXSkinInfo ***/
519  STDMETHOD(SetBoneInfluence)(THIS_ DWORD bone, DWORD num_influences, const DWORD *vertices,
520  const FLOAT *weights) PURE;
521  STDMETHOD(SetBoneVertexInfluence)(THIS_ DWORD bone_num, DWORD influence_num, float weight) PURE;
522  STDMETHOD_(DWORD, GetNumBoneInfluences)(THIS_ DWORD bone) PURE;
523  STDMETHOD(GetBoneInfluence)(THIS_ DWORD bone, DWORD* vertices, FLOAT* weights) PURE;
524  STDMETHOD(GetBoneVertexInfluence)(THIS_ DWORD bone_num, DWORD influence_num, float *weight, DWORD* vertex_num) PURE;
525  STDMETHOD(GetMaxVertexInfluences)(THIS_ DWORD* max_vertex_influences) PURE;
526  STDMETHOD_(DWORD, GetNumBones)(THIS) PURE;
527  STDMETHOD(FindBoneVertexInfluenceIndex)(THIS_ DWORD bone_num, DWORD vertex_num, DWORD* influence_index) PURE;
528  STDMETHOD(GetMaxFaceInfluences)(THIS_ struct IDirect3DIndexBuffer9 *index_buffer,
529  DWORD num_faces, DWORD *max_face_influences) PURE;
530  STDMETHOD(SetMinBoneInfluence)(THIS_ FLOAT min_influence) PURE;
531  STDMETHOD_(FLOAT, GetMinBoneInfluence)(THIS) PURE;
532  STDMETHOD(SetBoneName)(THIS_ DWORD bone_idx, const char *name) PURE;
533  STDMETHOD_(const char *, GetBoneName)(THIS_ DWORD bone_idx) PURE;
534  STDMETHOD(SetBoneOffsetMatrix)(THIS_ DWORD bone, const D3DXMATRIX *bone_transform) PURE;
535  STDMETHOD_(D3DXMATRIX *, GetBoneOffsetMatrix)(THIS_ DWORD bone) PURE;
536  STDMETHOD(Clone)(THIS_ ID3DXSkinInfo **skin_info) PURE;
537  STDMETHOD(Remap)(THIS_ DWORD num_vertices, DWORD* vertex_remap) PURE;
538  STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
539  STDMETHOD(SetDeclaration)(THIS_ const D3DVERTEXELEMENT9 *declaration) PURE;
540  STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
542  STDMETHOD(UpdateSkinnedMesh)(THIS_ const D3DXMATRIX *bone_transforms,
543  const D3DXMATRIX *bone_inv_transpose_transforms, const void *src_vertices, void *dst_vertices) PURE;
544  STDMETHOD(ConvertToBlendedMesh)(THIS_ ID3DXMesh *mesh_in, DWORD options, const DWORD *adjacency_in,
545  DWORD *adjacency_out, DWORD *face_remap, ID3DXBuffer **vertex_remap, DWORD *max_face_infl,
546  DWORD *num_bone_combinations, ID3DXBuffer **bone_combination_table, ID3DXMesh **mesh_out) PURE;
547  STDMETHOD(ConvertToIndexedBlendedMesh)(THIS_ ID3DXMesh *mesh_in, DWORD options, DWORD palette_size,
548  const DWORD *adjacency_in, DWORD *adjacency_out, DWORD *face_remap, ID3DXBuffer **vertex_remap,
549  DWORD *max_face_infl, DWORD *num_bone_combinations, ID3DXBuffer **bone_combination_table,
550  ID3DXMesh **mesh_out) PURE;
551 };
552 #undef INTERFACE
553 
554 #define INTERFACE ID3DXPRTBuffer
555 DECLARE_INTERFACE_(ID3DXPRTBuffer, IUnknown)
556 {
557  /*** IUnknown methods ***/
561  /*** ID3DXPRTBuffer methods ***/
562  STDMETHOD_(UINT, GetNumSamples)(THIS) PURE;
563  STDMETHOD_(UINT, GetNumCoeffs)(THIS) PURE;
564  STDMETHOD_(UINT, GetNumChannels)(THIS) PURE;
565  STDMETHOD_(BOOL, IsTexture)(THIS) PURE;
566  STDMETHOD_(BOOL, GetWidth)(THIS) PURE;
567  STDMETHOD_(BOOL, GetHeight)(THIS) PURE;
568  STDMETHOD(Resize)(THIS_ UINT new_size) PURE;
569  STDMETHOD(LockBuffer)(THIS_ UINT start, UINT num_samples, FLOAT **data) PURE;
570  STDMETHOD(UnlockBuffer)(THIS) PURE;
571  STDMETHOD(ScaleBuffer)(THIS_ FLOAT scale) PURE;
572  STDMETHOD(AddBuffer)(THIS_ ID3DXPRTBuffer *buffer) PURE;
573  STDMETHOD(AttachGH)(THIS_ struct ID3DXTextureGutterHelper *gh) PURE;
574  STDMETHOD(ReleaseGH)(THIS) PURE;
575  STDMETHOD(EvalGH)(THIS) PURE;
576  STDMETHOD(ExtractTexture)(THIS_ UINT channel, UINT start_coefficient,
577  UINT num_coefficients, struct IDirect3DTexture9 *texture) PURE;
578  STDMETHOD(ExtractToMesh)(THIS_ UINT num_coefficients, D3DDECLUSAGE usage,
579  UINT usage_index_start, ID3DXMesh *scene) PURE;
580 };
581 #undef INTERFACE
582 
583 #define INTERFACE ID3DXPRTCompBuffer
584 DECLARE_INTERFACE_(ID3DXPRTCompBuffer, IUnknown)
585 {
586  /*** IUnknown methods ***/
590  /*** ID3DXPRTCompBuffer methods ***/
591  STDMETHOD_(UINT, GetNumSamples)(THIS) PURE;
592  STDMETHOD_(UINT, GetNumCoeffs)(THIS) PURE;
593  STDMETHOD_(UINT, GetNumChannels)(THIS) PURE;
594  STDMETHOD_(BOOL, IsTexture)(THIS) PURE;
595  STDMETHOD_(UINT, GetWidth)(THIS) PURE;
596  STDMETHOD_(UINT, GetHeight)(THIS) PURE;
597  STDMETHOD_(UINT, GetNumClusters)(THIS) PURE;
598  STDMETHOD_(UINT, GetNumPCA)(THIS) PURE;
599  STDMETHOD(NormalizeData)(THIS) PURE;
600  STDMETHOD(ExtractBasis)(THIS_ UINT cluster, FLOAT *cluster_basis) PURE;
601  STDMETHOD(ExtractClusterIDs)(THIS_ UINT *cluster_ids) PURE;
602  STDMETHOD(ExtractPCA)(THIS_ UINT start_pca, UINT num_extract, FLOAT *pca_coefficients) PURE;
603  STDMETHOD(ExtractTexture)(THIS_ UINT start_pca, UINT num_pca, struct IDirect3DTexture9 *texture) PURE;
604  STDMETHOD(ExtractToMesh)(THIS_ UINT num_pca, D3DDECLUSAGE usage, UINT usage_index_start, ID3DXMesh *scene) PURE;
605 };
606 #undef INTERFACE
607 
608 #define INTERFACE ID3DXTextureGutterHelper
609 DECLARE_INTERFACE_(ID3DXTextureGutterHelper, IUnknown)
610 {
611  /*** IUnknown methods ***/
615  /*** ID3DXTextureGutterHelper methods ***/
616  STDMETHOD_(UINT, GetWidth)(THIS) PURE;
617  STDMETHOD_(UINT, GetHeight)(THIS) PURE;
618 
619  STDMETHOD(ApplyGuttersFloat)(THIS_ FLOAT *data_in, UINT num_coeffs, UINT width, UINT height) PURE;
620  STDMETHOD(ApplyGuttersTex)(THIS_ struct IDirect3DTexture9 *texture) PURE;
621  STDMETHOD(ApplyGuttersPRT)(THIS_ ID3DXPRTBuffer *buffer) PURE;
622  STDMETHOD(ResampleTex)(THIS_ struct IDirect3DTexture9 *texture_in, struct ID3DXMesh *mesh_in,
623  D3DDECLUSAGE usage, UINT usage_index, struct IDirect3DTexture9 *texture_out) PURE;
624  STDMETHOD(GetFaceMap)(THIS_ UINT *face_data) PURE;
625  STDMETHOD(GetBaryMap)(THIS_ D3DXVECTOR2 *bary_data) PURE;
626  STDMETHOD(GetTexelMap)(THIS_ D3DXVECTOR2 *texel_data) PURE;
627  STDMETHOD(GetGutterMap)(THIS_ BYTE *gutter_data) PURE;
628  STDMETHOD(SetFaceMap)(THIS_ UINT *face_data) PURE;
629  STDMETHOD(SetBaryMap)(THIS_ D3DXVECTOR2 *bary_data) PURE;
630  STDMETHOD(SetTexelMap)(THIS_ D3DXVECTOR2 *texel_data) PURE;
631  STDMETHOD(SetGutterMap)(THIS_ BYTE *gutter_data) PURE;
632 };
633 #undef INTERFACE
634 
635 #define INTERFACE ID3DXPRTEngine
636 DECLARE_INTERFACE_(ID3DXPRTEngine, IUnknown)
637 {
638  /*** IUnknown methods ***/
642  /*** ID3DXPRTEngine methods ***/
643  STDMETHOD(SetMeshMaterials)(THIS_ const D3DXSHMATERIAL **materials, UINT num_meshes,
644  UINT num_channels, BOOL set_albedo, FLOAT length_scale) PURE;
645  STDMETHOD(SetPerVertexAlbedo)(THIS_ const void *data_in, UINT num_channels, UINT stride) PURE;
646  STDMETHOD(SetPerTexelAlbedo)(THIS_ struct IDirect3DTexture9 *albedo_texture,
647  UINT num_channels, struct ID3DXTextureGutterHelper *gh) PURE;
648  STDMETHOD(GetVertexAlbedo)(THIS_ D3DXCOLOR *vert_colors, UINT num_verts) PURE;
649  STDMETHOD(SetPerTexelNormals)(THIS_ struct IDirect3DTexture9 *normal_texture) PURE;
650  STDMETHOD(ExtractPerVertexAlbedo)(THIS_ ID3DXMesh *mesh, D3DDECLUSAGE usage, UINT num_channels) PURE;
651  STDMETHOD(ResampleBuffer)(THIS_ ID3DXPRTBuffer *buffer_in, ID3DXPRTBuffer *buffer_out) PURE;
652  STDMETHOD(GetAdaptedMesh)(THIS_ struct IDirect3DDevice9 *device, UINT *face_remap,
653  UINT *vert_remap, float *vert_weights, struct ID3DXMesh **mesh) PURE;
654  STDMETHOD_(UINT, GetNumVerts)(THIS) PURE;
655  STDMETHOD_(UINT, GetNumFaces)(THIS) PURE;
656  STDMETHOD(SetMinMaxIntersection)(THIS_ FLOAT min, FLOAT max) PURE;
657  STDMETHOD(RobustMeshRefine)(THIS_ FLOAT min_edge_length, UINT max_subdiv) PURE;
658  STDMETHOD(SetSamplingInfo)(THIS_ UINT num_rays, BOOL use_sphere,
659  BOOL use_cosine, BOOL adaptive, FLOAT adpative_thresh) PURE;
660  STDMETHOD(ComputeDirectLightingSH)(THIS_ UINT sh_order, ID3DXPRTBuffer *data_out) PURE;
661  STDMETHOD(ComputeDirectLightingSHAdaptive)(THIS_ UINT sh_order, float adaptive_thresh,
662  float min_edge_length, UINT max_subdiv, ID3DXPRTBuffer *data_out) PURE;
663  STDMETHOD(ComputeDirectLightingSHGPU)(THIS_ struct IDirect3DDevice9 *device, UINT flags,
664  UINT sh_order, float zbias, float zangle_bias, struct ID3DXPRTBuffer *data_out) PURE;
665  STDMETHOD(ComputeSS)(THIS_ ID3DXPRTBuffer *data_in, ID3DXPRTBuffer *data_out,
666  ID3DXPRTBuffer *data_total) PURE;
667  STDMETHOD(ComputeSSAdaptive)(THIS_ ID3DXPRTBuffer *data_in, float adaptive_thres,
668  float min_edge_length, UINT max_subdiv, ID3DXPRTBuffer *data_out, ID3DXPRTBuffer *data_total) PURE;
669  STDMETHOD(ComputeBounce)(THIS_ ID3DXPRTBuffer *data_in, ID3DXPRTBuffer *data_out,
670  ID3DXPRTBuffer *data_total) PURE;
671  STDMETHOD(ComputeBounceAdaptive)(THIS_ ID3DXPRTBuffer *data_in, float adaptive_thres,
672  float min_edge_length, UINT max_subdiv, ID3DXPRTBuffer *data_out, ID3DXPRTBuffer *data_total) PURE;
673  STDMETHOD(ComputeVolumeSamplesDirectSH)(THIS_ UINT sh_order_in, UINT sh_order_out,
674  UINT num_vol_samples, const D3DXVECTOR3 *sample_locs, ID3DXPRTBuffer *data_out) PURE;
675  STDMETHOD(ComputeVolumeSamples)(THIS_ ID3DXPRTBuffer *surf_data_in, UINT sh_order,
676  UINT num_vol_samples, const D3DXVECTOR3 *sample_locs, ID3DXPRTBuffer *data_out) PURE;
677  STDMETHOD(ComputeSurfSamplesDirectSH)(THIS_ UINT sh_order, UINT num_samples,
678  const D3DXVECTOR3 *sample_locs, const D3DXVECTOR3 *sample_norms, ID3DXPRTBuffer *data_out) PURE;
679  STDMETHOD(ComputeSurfSamplesBounce)(THIS_ ID3DXPRTBuffer *surf_data_in, UINT num_samples,
680  const D3DXVECTOR3 *sample_locs, const D3DXVECTOR3 *sample_norms, ID3DXPRTBuffer *data_out,
681  ID3DXPRTBuffer *data_total) PURE;
682  STDMETHOD(FreeSSData)(THIS) PURE;
683  STDMETHOD(FreeBounceData)(THIS) PURE;
684  STDMETHOD(ComputeLDPRTCoeffs)(THIS_ ID3DXPRTBuffer *data_in, UINT sh_order, D3DXVECTOR3 *norm_out,
685  ID3DXPRTBuffer *data_out) PURE;
686  STDMETHOD(ScaleMeshChunk)(THIS_ UINT mesh_chunk, float scale, ID3DXPRTBuffer *data_out) PURE;
687  STDMETHOD(MultiplyAlbedo)(THIS_ ID3DXPRTBuffer *data_out) PURE;
688  STDMETHOD(SetCallback)(THIS_ LPD3DXSHPRTSIMCB cb, float frequency, void *user_context) PURE;
689  STDMETHOD_(BOOL, ShadowRayIntersects)(THIS_ const D3DXVECTOR3 *ray_pos,
690  const D3DXVECTOR3 *ray_dir) PURE;
691  STDMETHOD_(BOOL, ClosestRayIntersects)(THIS_ const D3DXVECTOR3 *ray_pos,
692  const D3DXVECTOR3 *ray_dir, DWORD *face_index, FLOAT *u, FLOAT *v, FLOAT *dist) PURE;
693 };
694 #undef INTERFACE
695 
696 #ifdef __cplusplus
697 extern "C" {
698 #endif
699 
701  const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh);
703  DWORD fvf, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh);
705 HRESULT WINAPI D3DXCreateSPMesh(ID3DXMesh *mesh, const DWORD *adjacency,
706  const D3DXATTRIBUTEWEIGHTS *attribute_weights, const float *vertex_weights, ID3DXSPMesh **spmesh);
707 HRESULT WINAPI D3DXCreatePMeshFromStream(struct IStream *stream, DWORD flags, struct IDirect3DDevice9 *device,
708  struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
709  DWORD *material_count, struct ID3DXPMesh **mesh);
711  DWORD bone_count, ID3DXSkinInfo **skin_info);
712 HRESULT WINAPI D3DXCreateSkinInfoFVF(DWORD vertex_count, DWORD fvf, DWORD bone_count, ID3DXSkinInfo **skin_info);
713 HRESULT WINAPI D3DXCreateSkinInfoFromBlendedMesh(ID3DXBaseMesh *mesh, DWORD bone_count,
714  const D3DXBONECOMBINATION *bone_combination_table, ID3DXSkinInfo **skin_info);
715 HRESULT WINAPI D3DXCreatePatchMesh(const D3DXPATCHINFO *patch_info, DWORD patch_count,
717  struct IDirect3DDevice9 *device, struct ID3DXPatchMesh **mesh);
718 HRESULT WINAPI D3DXCreatePRTBuffer(UINT sample_count, UINT coeff_count, UINT channel_count, ID3DXPRTBuffer **buffer);
720  UINT channel_count, ID3DXPRTBuffer **buffer);
722  LPD3DXSHPRTSIMCB cb, void *ctx, ID3DXPRTBuffer *input, ID3DXPRTCompBuffer **buffer);
724  float gutter_size, ID3DXTextureGutterHelper **gh);
725 HRESULT WINAPI D3DXCreatePRTEngine(ID3DXMesh *mesh, DWORD *adjacency, BOOL extract_uv,
726  ID3DXMesh *blocker_mesh, ID3DXPRTEngine **engine);
727 HRESULT WINAPI D3DXLoadMeshFromXA(const char *filename, DWORD flags, struct IDirect3DDevice9 *device,
728  struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
729  DWORD *material_count, struct ID3DXMesh **mesh);
730 HRESULT WINAPI D3DXLoadMeshFromXW(const WCHAR *filename, DWORD flags, struct IDirect3DDevice9 *device,
731  struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
732  DWORD *material_count, struct ID3DXMesh **mesh);
733 #define D3DXLoadMeshFromX WINELIB_NAME_AW(D3DXLoadMeshFromX)
735  struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials,
736  struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXMesh **mesh);
737 HRESULT WINAPI D3DXLoadMeshFromXResource(HMODULE module, const char *resource, const char *resource_type,
738  DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency,
739  struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
740  DWORD *material_count, struct ID3DXMesh **mesh);
741 HRESULT WINAPI D3DXLoadMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device,
742  struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
743  DWORD *material_count, struct ID3DXMesh **mesh);
744 HRESULT WINAPI D3DXLoadPatchMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device,
745  struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
746  DWORD *material_count, struct ID3DXPatchMesh **mesh);
747 HRESULT WINAPI D3DXLoadSkinMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device,
748  struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
749  DWORD *material_count, struct ID3DXSkinInfo **skin_info, struct ID3DXMesh **mesh);
750 HRESULT WINAPI D3DXLoadPRTBufferFromFileA(const char *filename, ID3DXPRTBuffer **buffer);
752 #define D3DXLoadPRTBufferFromFile WINELIB_NAME_AW(D3DXLoadPRTBufferFromFile)
753 HRESULT WINAPI D3DXLoadPRTCompBufferFromFileA(const char *filename, ID3DXPRTCompBuffer **buffer);
754 HRESULT WINAPI D3DXLoadPRTCompBufferFromFileW(const WCHAR *filename, ID3DXPRTCompBuffer **buffer);
755 #define D3DXLoadPRTCompBufferFromFile WINELIB_NAME_AW(D3DXLoadPRTCompBufferFromFile)
756 HRESULT WINAPI D3DXSaveMeshToXA(const char *filename, ID3DXMesh *mesh, const DWORD *adjacency,
757  const D3DXMATERIAL *materials, const D3DXEFFECTINSTANCE *effect_instances, DWORD material_count, DWORD format);
758 HRESULT WINAPI D3DXSaveMeshToXW(const WCHAR *filename, ID3DXMesh *mesh, const DWORD *adjacency,
759  const D3DXMATERIAL *materials, const D3DXEFFECTINSTANCE *effect_instances, DWORD material_count, DWORD format);
760 #define D3DXSaveMeshToX WINELIB_NAME_AW(D3DXSaveMeshToX)
761 HRESULT WINAPI D3DXSavePRTBufferToFileA(const char *filename, ID3DXPRTBuffer *buffer);
763 #define D3DXSavePRTBufferToFile WINELIB_NAME_AW(D3DXSavePRTBufferToFile)
764 HRESULT WINAPI D3DXSavePRTCompBufferToFileA(const char *filename, ID3DXPRTCompBuffer *buffer);
765 HRESULT WINAPI D3DXSavePRTCompBufferToFileW(const WCHAR *filename, ID3DXPRTCompBuffer *buffer);
766 #define D3DXSavePRTCompBufferToFile WINELIB_NAME_AW(D3DXSavePRTCompBufferToFile)
768 UINT WINAPI D3DXGetDeclVertexSize(const D3DVERTEXELEMENT9 *decl, DWORD stream_idx);
770 BOOL WINAPI D3DXBoxBoundProbe(const D3DXVECTOR3 *vmin, const D3DXVECTOR3 *vmax,
771  const D3DXVECTOR3 *ray_pos, const D3DXVECTOR3 *ray_dir);
772 BOOL WINAPI D3DXSphereBoundProbe(const D3DXVECTOR3 *center, FLOAT radius,
773  const D3DXVECTOR3 *ray_pos, const D3DXVECTOR3 *ray_dir);
774 HRESULT WINAPI D3DXCleanMesh(D3DXCLEANTYPE clean_type, ID3DXMesh *mesh_in, const DWORD *adjacency_in,
775  ID3DXMesh **mesh_out, DWORD *adjacency_out, ID3DXBuffer **errors);
776 HRESULT WINAPI D3DXConcatenateMeshes(struct ID3DXMesh **meshes, UINT mesh_count, DWORD flags,
777  const D3DXMATRIX *geometry_matrices, const D3DXMATRIX *texture_matrices,
778  const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh);
779 HRESULT WINAPI D3DXComputeBoundingBox(const D3DXVECTOR3 *first_pos, DWORD num_vertices,
780  DWORD stride, D3DXVECTOR3 *vmin, D3DXVECTOR3 *vmax);
781 HRESULT WINAPI D3DXComputeBoundingSphere(const D3DXVECTOR3 *first_pos, DWORD num_vertices,
782  DWORD stride, D3DXVECTOR3 *center, FLOAT *radius);
783 HRESULT WINAPI D3DXComputeIMTFromPerTexelSignal(ID3DXMesh *mesh, DWORD texture_idx, float *texel_signal,
784  UINT width, UINT height, UINT signal_dimension, UINT component_count, DWORD flags,
785  LPD3DXUVATLASCB cb, void *ctx, ID3DXBuffer **buffer);
786 HRESULT WINAPI D3DXComputeIMTFromPerVertexSignal(ID3DXMesh *mesh, const float *vertex_signal,
787  UINT signal_dimension, UINT signal_stride, DWORD flags,
788  LPD3DXUVATLASCB cb, void *ctx, ID3DXBuffer **buffer);
789 HRESULT WINAPI D3DXComputeIMTFromSignal(ID3DXMesh *mesh, DWORD texture_idx, UINT signal_dimension,
790  float max_uv_distance, DWORD flags, LPD3DXIMTSIGNALCALLBACK signal_cb, void *signal_ctx,
791  LPD3DXUVATLASCB status_cb, void *status_ctx, ID3DXBuffer **buffer);
792 HRESULT WINAPI D3DXComputeIMTFromTexture(struct ID3DXMesh *mesh, struct IDirect3DTexture9 *texture,
793  DWORD texture_idx, DWORD options, LPD3DXUVATLASCB cb, void *ctx, struct ID3DXBuffer **out);
794 HRESULT WINAPI D3DXComputeNormals(ID3DXBaseMesh *mesh, const DWORD *adjacency);
795 HRESULT WINAPI D3DXComputeTangentFrameEx(ID3DXMesh *mesh_in, DWORD texture_in_semantic, DWORD texture_in_idx,
796  DWORD u_partial_out_semantic, DWORD u_partial_out_idx, DWORD v_partial_out_semantic,
797  DWORD v_partial_out_idx, DWORD normal_out_semantic, DWORD normal_out_idx, DWORD flags,
798  const DWORD *adjacency, float partial_edge_threshold, float singular_point_threshold,
799  float normal_edge_threshold, ID3DXMesh **mesh_out, ID3DXBuffer **buffer);
800 HRESULT WINAPI D3DXComputeTangent(ID3DXMesh *mesh, DWORD stage, DWORD tangent_idx,
801  DWORD binorm_idx, DWORD wrap, const DWORD *adjacency);
802 HRESULT WINAPI D3DXConvertMeshSubsetToSingleStrip(struct ID3DXBaseMesh *mesh_in, DWORD attribute_id,
803  DWORD ib_flags, struct IDirect3DIndexBuffer9 **index_buffer, DWORD *index_count);
804 HRESULT WINAPI D3DXConvertMeshSubsetToStrips(struct ID3DXBaseMesh *mesh_in, DWORD attribute_id,
805  DWORD ib_flags, struct IDirect3DIndexBuffer9 **index_buffer, DWORD *index_count,
806  struct ID3DXBuffer **strip_lengths, DWORD *strip_count);
810 HRESULT WINAPI D3DXGeneratePMesh(ID3DXMesh *mesh, const DWORD *adjacency,
811  const D3DXATTRIBUTEWEIGHTS *attribute_weights, const float *vertex_weights,
812  DWORD min_value, DWORD flags, ID3DXPMesh **pmesh);
813 HRESULT WINAPI D3DXIntersect(ID3DXBaseMesh *mesh, const D3DXVECTOR3 *ray_position, const D3DXVECTOR3 *ray_direction,
814  BOOL *hit, DWORD *face_idx, float *u, float *v, float *distance, ID3DXBuffer **hits, DWORD *hit_count);
815 HRESULT WINAPI D3DXIntersectSubset(ID3DXBaseMesh *mesh, DWORD attribute_id, const D3DXVECTOR3 *ray_position,
816  const D3DXVECTOR3 *ray_direction, BOOL *hit, DWORD *face_idx, float *u, float *v, float *distance,
817  ID3DXBuffer **hits, DWORD *hit_count);
818 BOOL WINAPI D3DXIntersectTri(const D3DXVECTOR3 *vtx0, const D3DXVECTOR3 *vtx1,
819  const D3DXVECTOR3 *vtx2, const D3DXVECTOR3 *ray_pos, const D3DXVECTOR3 *ray_dir, FLOAT *u,
820  FLOAT *v, FLOAT *dist);
822  UINT vertex_count, BOOL idx_32bit, DWORD *face_remap);
824  UINT vertex_count, BOOL idx_32bit, DWORD *vertex_remap);
825 HRESULT WINAPI D3DXRectPatchSize(const FLOAT *segment_count, DWORD *num_triangles,
826  DWORD *num_vertices);
827 HRESULT WINAPI D3DXSHPRTCompSuperCluster(UINT *cluster_ids, ID3DXMesh *scene, UINT max_cluster_count,
828  UINT cluster_count, UINT *scluster_ids, UINT *scluster_count);
829 HRESULT WINAPI D3DXSHPRTCompSplitMeshSC(UINT *cluster_idx, UINT vertex_count, UINT cluster_count, UINT *scluster_ids,
830  UINT scluster_count, void *index_buffer_in, BOOL ib_in_32bit, UINT face_count, ID3DXBuffer **index_buffer_out,
831  UINT *index_buffer_size, BOOL ib_out_32bit, ID3DXBuffer **face_remap, ID3DXBuffer **vertex_data,
832  UINT *vertex_data_length, UINT *sc_cluster_list, D3DXSHPRTSPLITMESHCLUSTERDATA *sc_data);
833 HRESULT WINAPI D3DXSimplifyMesh(ID3DXMesh *mesh_in, const DWORD *adjacency,
834  const D3DXATTRIBUTEWEIGHTS *attribute_weights, const float *vertex_weights, DWORD min_value,
835  DWORD flags, ID3DXMesh **mesh_out);
836 HRESULT WINAPI D3DXSplitMesh(ID3DXMesh *mesh_in, const DWORD *adjacency_in, const DWORD max_size,
837  const DWORD flags, DWORD *mesh_out_count, ID3DXBuffer **mesh_out, ID3DXBuffer **adjacency_out,
838  ID3DXBuffer **face_remap_out, ID3DXBuffer **vertex_remap_out);
839 HRESULT WINAPI D3DXTessellateNPatches(ID3DXMesh *mesh_in, const DWORD *adjacency_in, float segment_count,
840  BOOL quad_interp, ID3DXMesh **mesh_out, ID3DXBuffer **adjacency_out);
841 HRESULT WINAPI D3DXTessellateRectPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count,
842  const D3DVERTEXELEMENT9 *declaration, const D3DRECTPATCH_INFO *patch_info, struct ID3DXMesh *mesh);
843 HRESULT WINAPI D3DXTessellateTriPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count,
844  const D3DVERTEXELEMENT9 *declaration, const D3DTRIPATCH_INFO *patch_info, struct ID3DXMesh *mesh);
845 HRESULT WINAPI D3DXTriPatchSize(const FLOAT *segment_count, DWORD *num_triangles,
846  DWORD *num_vertices);
847 HRESULT WINAPI D3DXUVAtlasCreate(ID3DXMesh *mesh_in, UINT max_chart_count, float max_stretch_in,
848  UINT width, UINT height, float gutter, DWORD texture_idx, const DWORD *adjacency, const DWORD *false_edges,
849  const float *imt_array, LPD3DXUVATLASCB cb, float cb_freq, void *ctx, DWORD flags, ID3DXMesh **mesh_out,
850  ID3DXBuffer **face_partitioning_out, ID3DXBuffer **vertex_remap_out, float *max_stretch_out, UINT *chart_count);
851 HRESULT WINAPI D3DXUVAtlasPack(ID3DXMesh *mesh, UINT width, UINT height, float gutter, DWORD texture_idx,
852  const DWORD *partition_result_adjacency, LPD3DXUVATLASCB cb, float cb_freq, void *ctx, DWORD flags,
853  ID3DXBuffer *face_partitioning);
854 HRESULT WINAPI D3DXUVAtlasPartition(ID3DXMesh *mesh_in, UINT max_chart_count, float max_stretch_in,
855  DWORD texture_idx, const DWORD *adjacency, const DWORD *false_edges, const float *imt_array,
856  LPD3DXUVATLASCB cb, float cb_freq, void *ctx, DWORD flags, ID3DXMesh **mesh_out,
857  ID3DXBuffer **face_partitioning_out, ID3DXBuffer **vertex_remap_out, ID3DXBuffer **adjacency_out,
858  float *max_stretch_out, UINT *chart_count);
859 HRESULT WINAPI D3DXValidMesh(ID3DXMesh *mesh, const DWORD *adjacency, ID3DXBuffer **errors);
860 HRESULT WINAPI D3DXValidPatchMesh(ID3DXPatchMesh *mesh, DWORD *degenerate_vertex_count,
861  DWORD *degenerate_patch_count, ID3DXBuffer **errors);
862 HRESULT WINAPI D3DXWeldVertices(ID3DXMesh *mesh, DWORD flags, const D3DXWELDEPSILONS *epsilons,
863  const DWORD *adjacency_in, DWORD *adjacency_out, DWORD *face_remap_out, ID3DXBuffer **vertex_remap_out);
864 
865 #ifdef __cplusplus
866 }
867 #endif
868 
869 DEFINE_GUID(DXFILEOBJ_XSkinMeshHeader, 0x3cf169ce, 0xff7c, 0x44ab, 0x93, 0xc0, 0xf7, 0x8f, 0x62, 0xd1, 0x72, 0xe2);
870 DEFINE_GUID(DXFILEOBJ_VertexDuplicationIndices, 0xb8d65549, 0xd7c9, 0x4995, 0x89, 0xcf, 0x53, 0xa9, 0xa8, 0xb0, 0x31, 0xe3);
871 DEFINE_GUID(DXFILEOBJ_FaceAdjacency, 0xa64c844a, 0xe282, 0x4756, 0x8b, 0x80, 0x25, 0x0c, 0xde, 0x04, 0x39, 0x8c);
872 DEFINE_GUID(DXFILEOBJ_SkinWeights, 0x6f0d123b, 0xbad2, 0x4167, 0xa0, 0xd0, 0x80, 0x22, 0x4f, 0x25, 0xfa, 0xbb);
873 DEFINE_GUID(DXFILEOBJ_Patch, 0xa3eb5d44, 0xfc22, 0x429d, 0x9a, 0xfb, 0x32, 0x21, 0xcb, 0x97, 0x19, 0xa6);
874 DEFINE_GUID(DXFILEOBJ_PatchMesh, 0xd02c95cc, 0xedba, 0x4305, 0x9b, 0x5d, 0x18, 0x20, 0xd7, 0x70, 0x4d, 0xbf);
875 DEFINE_GUID(DXFILEOBJ_PatchMesh9, 0xb9ec94e1, 0xb9a6, 0x4251, 0xba, 0x18, 0x94, 0x89, 0x3f, 0x02, 0xc0, 0xea);
876 DEFINE_GUID(DXFILEOBJ_PMInfo, 0xb6c3e656, 0xec8b, 0x4b92, 0x9b, 0x62, 0x68, 0x16, 0x59, 0x52, 0x29, 0x47);
877 DEFINE_GUID(DXFILEOBJ_PMAttributeRange, 0x917e0427, 0xc61e, 0x4a14, 0x9c, 0x64, 0xaf, 0xe6, 0x5f, 0x9e, 0x98, 0x44);
878 DEFINE_GUID(DXFILEOBJ_PMVSplitRecord, 0x574ccc14, 0xf0b3, 0x4333, 0x82, 0x2d, 0x93, 0xe8, 0xa8, 0xa0, 0x8e, 0x4c);
879 DEFINE_GUID(DXFILEOBJ_FVFData, 0xb6e70a0e, 0x8ef9, 0x4e83, 0x94, 0xad, 0xec, 0xc8, 0xb0, 0xc0, 0x48, 0x97);
880 DEFINE_GUID(DXFILEOBJ_VertexElement, 0xf752461c, 0x1e23, 0x48f6, 0xb9, 0xf8, 0x83, 0x50, 0x85, 0x0f, 0x33, 0x6f);
881 DEFINE_GUID(DXFILEOBJ_DeclData, 0xbf22e553, 0x292c, 0x4781, 0x9f, 0xea, 0x62, 0xbd, 0x55, 0x4b, 0xdd, 0x93);
882 DEFINE_GUID(DXFILEOBJ_EffectFloats, 0xf1cfe2b3, 0x0de3, 0x4e28, 0xaf, 0xa1, 0x15, 0x5a, 0x75, 0x0a, 0x28, 0x2d);
883 DEFINE_GUID(DXFILEOBJ_EffectString, 0xd55b097e, 0xbdb6, 0x4c52, 0xb0, 0x3d, 0x60, 0x51, 0xc8, 0x9d, 0x0e, 0x42);
884 DEFINE_GUID(DXFILEOBJ_EffectDWord, 0x622c0ed0, 0x956e, 0x4da9, 0x90, 0x8a, 0x2a, 0xf9, 0x4f, 0x3c, 0xe7, 0x16);
885 DEFINE_GUID(DXFILEOBJ_EffectParamFloats, 0x3014b9a0, 0x62f5, 0x478c, 0x9b, 0x86, 0xe4, 0xac, 0x9f, 0x4e, 0x41, 0x8b);
886 DEFINE_GUID(DXFILEOBJ_EffectParamString, 0x1dbc4c88, 0x94c1, 0x46ee, 0x90, 0x76, 0x2c, 0x28, 0x81, 0x8c, 0x94, 0x81);
887 DEFINE_GUID(DXFILEOBJ_EffectParamDWord, 0xe13963bc, 0xae51, 0x4c5d, 0xb0, 0x0f, 0xcf, 0xa3, 0xa9, 0xd9, 0x7c, 0xe5);
888 DEFINE_GUID(DXFILEOBJ_EffectInstance, 0xe331f7e4, 0x0559, 0x4cc2, 0x8e, 0x99, 0x1c, 0xec, 0x16, 0x57, 0x92, 0x8f);
889 DEFINE_GUID(DXFILEOBJ_AnimTicksPerSecond, 0x9e415a43, 0x7ba6, 0x4a73, 0x87, 0x43, 0xb7, 0x3d, 0x47, 0xe8, 0x84, 0x76);
890 DEFINE_GUID(DXFILEOBJ_CompressedAnimationSet, 0x7f9b00b3, 0xf125, 0x4890, 0x87, 0x6e, 0x1c, 0x42, 0xbf, 0x69, 0x7c, 0x4d);
891 
892 #define XSKINEXP_TEMPLATES \
893  "xof 0303txt 0032\
894  template XSkinMeshHeader \
895  { \
896  <3CF169CE-FF7C-44ab-93C0-F78F62D172E2> \
897  WORD nMaxSkinWeightsPerVertex; \
898  WORD nMaxSkinWeightsPerFace; \
899  WORD nBones; \
900  } \
901  template VertexDuplicationIndices \
902  { \
903  <B8D65549-D7C9-4995-89CF-53A9A8B031E3> \
904  DWORD nIndices; \
905  DWORD nOriginalVertices; \
906  array DWORD indices[nIndices]; \
907  } \
908  template FaceAdjacency \
909  { \
910  <A64C844A-E282-4756-8B80-250CDE04398C> \
911  DWORD nIndices; \
912  array DWORD indices[nIndices]; \
913  } \
914  template SkinWeights \
915  { \
916  <6F0D123B-BAD2-4167-A0D0-80224F25FABB> \
917  STRING transformNodeName; \
918  DWORD nWeights; \
919  array DWORD vertexIndices[nWeights]; \
920  array float weights[nWeights]; \
921  Matrix4x4 matrixOffset; \
922  } \
923  template Patch \
924  { \
925  <A3EB5D44-FC22-429D-9AFB-3221CB9719A6> \
926  DWORD nControlIndices; \
927  array DWORD controlIndices[nControlIndices]; \
928  } \
929  template PatchMesh \
930  { \
931  <D02C95CC-EDBA-4305-9B5D-1820D7704BBF> \
932  DWORD nVertices; \
933  array Vector vertices[nVertices]; \
934  DWORD nPatches; \
935  array Patch patches[nPatches]; \
936  [ ... ] \
937  } \
938  template PatchMesh9 \
939  { \
940  <B9EC94E1-B9A6-4251-BA18-94893F02C0EA> \
941  DWORD Type; \
942  DWORD Degree; \
943  DWORD Basis; \
944  DWORD nVertices; \
945  array Vector vertices[nVertices]; \
946  DWORD nPatches; \
947  array Patch patches[nPatches]; \
948  [ ... ] \
949  } template EffectFloats \
950  { \
951  <F1CFE2B3-0DE3-4e28-AFA1-155A750A282D> \
952  DWORD nFloats; \
953  array float Floats[nFloats]; \
954  } \
955  template EffectString \
956  { \
957  <D55B097E-BDB6-4c52-B03D-6051C89D0E42> \
958  STRING Value; \
959  } \
960  template EffectDWord \
961  { \
962  <622C0ED0-956E-4da9-908A-2AF94F3CE716> \
963  DWORD Value; \
964  } template EffectParamFloats \
965  { \
966  <3014B9A0-62F5-478c-9B86-E4AC9F4E418B> \
967  STRING ParamName; \
968  DWORD nFloats; \
969  array float Floats[nFloats]; \
970  } template EffectParamString \
971  { \
972  <1DBC4C88-94C1-46ee-9076-2C28818C9481> \
973  STRING ParamName; \
974  STRING Value; \
975  } \
976  template EffectParamDWord \
977  { \
978  <E13963BC-AE51-4c5d-B00F-CFA3A9D97CE5> \
979  STRING ParamName; \
980  DWORD Value; \
981  } \
982  template EffectInstance \
983  { \
984  <E331F7E4-0559-4cc2-8E99-1CEC1657928F> \
985  STRING EffectFilename; \
986  [ ... ] \
987  } template AnimTicksPerSecond \
988  { \
989  <9E415A43-7BA6-4a73-8743-B73D47E88476> \
990  DWORD AnimTicksPerSecond; \
991  } \
992  template CompressedAnimationSet \
993  { \
994  <7F9B00B3-F125-4890-876E-1C42BF697C4D> \
995  DWORD CompressedBlockSize; \
996  FLOAT TicksPerSec; \
997  DWORD PlaybackType; \
998  DWORD BufferLength; \
999  array DWORD CompressedData[BufferLength]; \
1000  } "
1001 
1002 #define XEXTENSIONS_TEMPLATES \
1003  "xof 0303txt 0032\
1004  template FVFData \
1005  { \
1006  <B6E70A0E-8EF9-4e83-94AD-ECC8B0C04897> \
1007  DWORD dwFVF; \
1008  DWORD nDWords; \
1009  array DWORD data[nDWords]; \
1010  } \
1011  template VertexElement \
1012  { \
1013  <F752461C-1E23-48f6-B9F8-8350850F336F> \
1014  DWORD Type; \
1015  DWORD Method; \
1016  DWORD Usage; \
1017  DWORD UsageIndex; \
1018  } \
1019  template DeclData \
1020  { \
1021  <BF22E553-292C-4781-9FEA-62BD554BDD93> \
1022  DWORD nElements; \
1023  array VertexElement Elements[nElements]; \
1024  DWORD nDWords; \
1025  array DWORD data[nDWords]; \
1026  } \
1027  template PMAttributeRange \
1028  { \
1029  <917E0427-C61E-4a14-9C64-AFE65F9E9844> \
1030  DWORD iFaceOffset; \
1031  DWORD nFacesMin; \
1032  DWORD nFacesMax; \
1033  DWORD iVertexOffset; \
1034  DWORD nVerticesMin; \
1035  DWORD nVerticesMax; \
1036  } \
1037  template PMVSplitRecord \
1038  { \
1039  <574CCC14-F0B3-4333-822D-93E8A8A08E4C> \
1040  DWORD iFaceCLW; \
1041  DWORD iVlrOffset; \
1042  DWORD iCode; \
1043  } \
1044  template PMInfo \
1045  { \
1046  <B6C3E656-EC8B-4b92-9B62-681659522947> \
1047  DWORD nAttributes; \
1048  array PMAttributeRange attributeRanges[nAttributes]; \
1049  DWORD nMaxValence; \
1050  DWORD nMinLogicalVertices; \
1051  DWORD nMaxLogicalVertices; \
1052  DWORD nVSplits; \
1053  array PMVSplitRecord splitRecords[nVSplits]; \
1054  DWORD nAttributeMispredicts; \
1055  array DWORD attributeMispredicts[nAttributeMispredicts]; \
1056  } "
1057 
1058 #endif /* __WINE_D3DX9MESH_H */
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
BOOL WINAPI D3DXSphereBoundProbe(const D3DXVECTOR3 *center, FLOAT radius, const D3DXVECTOR3 *ray_pos, const D3DXVECTOR3 *ray_dir)
Definition: mesh.c:2414
_D3DXSHGPUSIMOPT
Definition: d3dx9mesh.h:162
HRESULT WINAPI D3DXLoadPRTCompBufferFromFileW(const WCHAR *filename, ID3DXPRTCompBuffer **buffer)
HRESULT WINAPI D3DXSavePRTCompBufferToFileW(const WCHAR *filename, ID3DXPRTCompBuffer *buffer)
Definition: skin.c:29
#define HRESULT
Definition: msvc.h:9
GLuint GLuint GLsizei GLenum const GLvoid * indices
Definition: gl.h:1545
GLint GLint GLsizei width
Definition: gl.h:1546
struct _D3DXATTRIBUTEWEIGHTS * LPD3DXATTRIBUTEWEIGHTS
HRESULT WINAPI D3DXComputeIMTFromPerVertexSignal(ID3DXMesh *mesh, const float *vertex_signal, UINT signal_dimension, UINT signal_stride, DWORD flags, LPD3DXUVATLASCB cb, void *ctx, ID3DXBuffer **buffer)
#define max(a, b)
Definition: svc.c:63
#define REFIID
Definition: guiddef.h:118
struct _D3DXBONECOMBINATION D3DXBONECOMBINATION
struct _D3DXWELDEPSILONS D3DXWELDEPSILONS
_D3DXSHCOMPRESSQUALITYTYPE
Definition: d3dx9mesh.h:155
#define THIS_
Definition: basetyps.h:65
HRESULT WINAPI D3DXRectPatchSize(const FLOAT *segment_count, DWORD *num_triangles, DWORD *num_vertices)
BOOL WINAPI D3DXIntersectTri(const D3DXVECTOR3 *vtx0, const D3DXVECTOR3 *vtx1, const D3DXVECTOR3 *vtx2, const D3DXVECTOR3 *ray_pos, const D3DXVECTOR3 *ray_dir, FLOAT *u, FLOAT *v, FLOAT *dist)
Definition: mesh.c:2368
_In_ BOOLEAN Release
Definition: classpnp.h:929
D3DCOLORVALUE Absorption
Definition: d3dx9mesh.h:271
HRESULT WINAPI D3DXTessellateRectPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count, const D3DVERTEXELEMENT9 *declaration, const D3DRECTPATCH_INFO *patch_info, struct ID3DXMesh *mesh)
HRESULT WINAPI D3DXLoadPatchMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXPatchMesh **mesh)
struct _D3DXWELDEPSILONS * LPD3DXWELDEPSILONS
#define THIS
Definition: basetyps.h:66
_D3DXMESHSIMP
Definition: d3dx9mesh.h:94
REFIID riid
Definition: precomp.h:44
struct ID3DXSPMesh * LPD3DXSPMESH
Definition: d3dx9mesh.h:175
HRESULT WINAPI D3DXCreateSkinInfoFromBlendedMesh(ID3DXBaseMesh *mesh, DWORD bone_count, const D3DXBONECOMBINATION *bone_combination_table, ID3DXSkinInfo **skin_info)
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9032
HRESULT WINAPI D3DXComputeTangent(ID3DXMesh *mesh, DWORD stage, DWORD tangent_idx, DWORD binorm_idx, DWORD wrap, const DWORD *adjacency)
Definition: mesh.c:7545
HRESULT WINAPI D3DXSHPRTCompSuperCluster(UINT *cluster_ids, ID3DXMesh *scene, UINT max_cluster_count, UINT cluster_count, UINT *scluster_ids, UINT *scluster_count)
#define MAXD3DDECLLENGTH
Definition: d3d9types.h:186
enum _D3DTEXTUREADDRESS D3DTEXTUREADDRESS
enum _D3DXSHGPUSIMOPT D3DXSHGPUSIMOPT
HRESULT WINAPI D3DXOptimizeFaces(const void *indices, UINT face_count, UINT vertex_count, BOOL idx_32bit, DWORD *face_remap)
Definition: mesh.c:7239
HRESULT WINAPI D3DXSimplifyMesh(ID3DXMesh *mesh_in, const DWORD *adjacency, const D3DXATTRIBUTEWEIGHTS *attribute_weights, const float *vertex_weights, DWORD min_value, DWORD flags, ID3DXMesh **mesh_out)
HRESULT WINAPI D3DXValidMesh(ID3DXMesh *mesh, const DWORD *adjacency, ID3DXBuffer **errors)
Definition: mesh.c:6433
_D3DXMESHOPT
Definition: d3dx9mesh.h:70
GLuint buffer
Definition: glext.h:5915
HRESULT WINAPI D3DXComputeIMTFromPerTexelSignal(ID3DXMesh *mesh, DWORD texture_idx, float *texel_signal, UINT width, UINT height, UINT signal_dimension, UINT component_count, DWORD flags, LPD3DXUVATLASCB cb, void *ctx, ID3DXBuffer **buffer)
int vertex_count
Definition: d3drm.c:2807
NTSTATUS QueryInterface(IN PDEVICE_OBJECT DeviceObject, IN CONST GUID InterfaceType, IN LONG Size, IN LONG Version, OUT PVOID Interface)
Definition: fdo.c:532
HRESULT WINAPI D3DXSavePRTBufferToFileW(const WCHAR *filename, ID3DXPRTBuffer *buffer)
struct ID3DXPatchMesh * LPD3DXPATCHMESH
Definition: d3dx9mesh.h:177
const char * filename
Definition: ioapi.h:135
D3DMATERIAL9 MatD3D
Definition: d3dx9mesh.h:195
HRESULT WINAPI D3DXIntersect(ID3DXBaseMesh *mesh, const D3DXVECTOR3 *ray_position, const D3DXVECTOR3 *ray_direction, BOOL *hit, DWORD *face_idx, float *u, float *v, float *distance, ID3DXBuffer **hits, DWORD *hit_count)
Definition: mesh.c:7582
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
char * pEffectFilename
Definition: d3dx9mesh.h:209
#define STDMETHOD(m)
Definition: basetyps.h:62
HRESULT WINAPI D3DXComputeNormals(ID3DXBaseMesh *mesh, const DWORD *adjacency)
Definition: mesh.c:7563
GLuint GLuint GLfloat weight
Definition: glext.h:11719
GLsizei GLsizei GLfloat distance
Definition: glext.h:11755
HRESULT WINAPI D3DXSaveMeshToXW(const WCHAR *filename, ID3DXMesh *mesh, const DWORD *adjacency, const D3DXMATERIAL *materials, const D3DXEFFECTINSTANCE *effect_instances, DWORD material_count, DWORD format)
enum _D3DXPATCHMESHTYPE D3DXPATCHMESHTYPE
HRESULT WINAPI D3DXTessellateNPatches(ID3DXMesh *mesh_in, const DWORD *adjacency_in, float segment_count, BOOL quad_interp, ID3DXMesh **mesh_out, ID3DXBuffer **adjacency_out)
Definition: mesh.c:7591
FLOAT RelativeIndexOfRefraction
Definition: d3dx9mesh.h:270
struct _D3DXEFFECTINSTANCE D3DXEFFECTINSTANCE
HRESULT WINAPI D3DXConvertMeshSubsetToSingleStrip(struct ID3DXBaseMesh *mesh_in, DWORD attribute_id, DWORD ib_flags, struct IDirect3DIndexBuffer9 **index_buffer, DWORD *index_count)
Definition: mesh.c:7600
HRESULT WINAPI D3DXCreateTextureGutterHelper(UINT width, UINT height, ID3DXMesh *mesh, float gutter_size, ID3DXTextureGutterHelper **gh)
struct _D3DXSHPRTSPLITMESHVERTDATA D3DXSHPRTSPLITMESHVERTDATA
enum _D3DBASISTYPE D3DBASISTYPE
HRESULT WINAPI D3DXWeldVertices(ID3DXMesh *mesh, DWORD flags, const D3DXWELDEPSILONS *epsilons, const DWORD *adjacency_in, DWORD *adjacency_out, DWORD *face_remap_out, ID3DXBuffer **vertex_remap_out)
Definition: mesh.c:7006
HRESULT WINAPI D3DXUVAtlasCreate(ID3DXMesh *mesh_in, UINT max_chart_count, float max_stretch_in, UINT width, UINT height, float gutter, DWORD texture_idx, const DWORD *adjacency, const DWORD *false_edges, const float *imt_array, LPD3DXUVATLASCB cb, float cb_freq, void *ctx, DWORD flags, ID3DXMesh **mesh_out, ID3DXBuffer **face_partitioning_out, ID3DXBuffer **vertex_remap_out, float *max_stretch_out, UINT *chart_count)
unsigned int component_count
LPD3DXEFFECTDEFAULT pDefaults
Definition: d3dx9mesh.h:211
HRESULT WINAPI D3DXLoadMeshFromXResource(HMODULE module, const char *resource, const char *resource_type, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXMesh **mesh)
Definition: mesh.c:4108
unsigned int BOOL
Definition: ntddk_ex.h:94
Definition: devices.h:37
D3DBASISTYPE Basis
Definition: d3dx9mesh.h:254
struct _D3DXBONECOMBINATION * LPD3DXBONECOMBINATION
HRESULT WINAPI D3DXDeclaratorFromFVF(DWORD, D3DVERTEXELEMENT9[MAX_FVF_DECL_SIZE])
Definition: mesh.c:2037
enum _D3DDECLUSAGE D3DDECLUSAGE
HRESULT WINAPI D3DXCreatePRTBufferTex(UINT width, UINT height, UINT coeff_count, UINT channel_count, ID3DXPRTBuffer **buffer)
static INT max_size
Definition: history.c:51
struct _D3DXATTRIBUTEWEIGHTS D3DXATTRIBUTEWEIGHTS
static int Save(const char **args)
Definition: vfdcmd.c:1851
struct _D3DXSHPRTSPLITMESHCLUSTERDATA D3DXSHPRTSPLITMESHCLUSTERDATA
_D3DXIMT
Definition: d3dx9mesh.h:125
D3DXCLEANTYPE
Definition: d3dx9mesh.h:100
HRESULT WINAPI D3DXGenerateOutputDecl(D3DVERTEXELEMENT9 *decl_out, const D3DVERTEXELEMENT9 *decl_in)
struct _D3DXPATCHINFO D3DXPATCHINFO
HRESULT WINAPI D3DXOptimizeVertices(const void *indices, UINT face_count, UINT vertex_count, BOOL idx_32bit, DWORD *vertex_remap)
Definition: mesh.c:7196
D3DXPATCHMESHTYPE PatchType
Definition: d3dx9mesh.h:252
struct ID3DXBuffer ID3DXBuffer
Definition: d3dx8core.h:51
struct _D3DXINTERSECTINFO D3DXINTERSECTINFO
struct _D3DXEFFECTINSTANCE * LPD3DXEFFECTINSTANCE
struct ID3DXPRTCompBuffer * LPD3DXPRTCOMPBUFFER
Definition: d3dx9mesh.h:179
D3DCOLORVALUE ReducedScattering
Definition: d3dx9mesh.h:272
int options
Definition: main.c:106
struct ID3DXSkinInfo * LPD3DXSKININFO
Definition: d3dx9mesh.h:176
D3DDEGREETYPE Degree
Definition: d3dx9mesh.h:253
HRESULT WINAPI D3DXCreateSkinInfo(DWORD vertex_count, const D3DVERTEXELEMENT9 *declaration, DWORD bone_count, ID3DXSkinInfo **skin_info)
Definition: skin.c:523
_D3DXPATCHMESH
Definition: d3dx9mesh.h:89
HRESULT(WINAPI * LPD3DXIMTSIGNALCALLBACK)(const D3DXVECTOR2 *, UINT, UINT, void *, FLOAT *)
Definition: d3dx9mesh.h:301
HRESULT WINAPI D3DXSavePRTCompBufferToFileA(const char *filename, ID3DXPRTCompBuffer *buffer)
HRESULT WINAPI D3DXCreateSkinInfoFVF(DWORD vertex_count, DWORD fvf, DWORD bone_count, ID3DXSkinInfo **skin_info)
Definition: skin.c:565
HRESULT WINAPI D3DXCreateMesh(DWORD face_count, DWORD vertex_count, DWORD flags, const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh)
Definition: mesh.c:2433
GLsizei stride
Definition: glext.h:5848
GLsizeiptr size
Definition: glext.h:5919
struct _D3DXMATERIAL D3DXMATERIAL
__wchar_t WCHAR
Definition: xmlstorage.h:180
GLenum GLuint texture
Definition: glext.h:6295
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI D3DXCreatePRTBuffer(UINT sample_count, UINT coeff_count, UINT channel_count, ID3DXPRTBuffer **buffer)
HRESULT(WINAPI * LPD3DXSHPRTSIMCB)(float complete, void *ctx)
Definition: d3dx9mesh.h:302
UINT WINAPI D3DXGetFVFVertexSize(DWORD)
Definition: mesh.c:2290
struct ID3DXPRTEngine * LPD3DXPRTENGINE
Definition: d3dx9mesh.h:180
#define WINAPI
Definition: msvc.h:8
struct ID3DXPRTBuffer * LPD3DXPRTBUFFER
Definition: d3dx9mesh.h:178
HRESULT WINAPI D3DXComputeIMTFromSignal(ID3DXMesh *mesh, DWORD texture_idx, UINT signal_dimension, float max_uv_distance, DWORD flags, LPD3DXIMTSIGNALCALLBACK signal_cb, void *signal_ctx, LPD3DXUVATLASCB status_cb, void *status_ctx, ID3DXBuffer **buffer)
static FILE * out
Definition: regtests2xml.c:44
unsigned long DWORD
Definition: ntddk_ex.h:95
struct ID3DXTextureGutterHelper * LPD3DXTEXTUREGUTTERHELPER
Definition: d3dx9mesh.h:181
HRESULT WINAPI D3DXLoadSkinMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXSkinInfo **skin_info, struct ID3DXMesh **mesh)
Definition: mesh.c:3445
_D3DXUVATLAS
Definition: d3dx9mesh.h:132
int quality
Definition: jpeglib.h:991
static DWORD cb
Definition: integrity.c:41
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
enum _D3DDEGREETYPE D3DDEGREETYPE
UINT WINAPI D3DXGetDeclVertexSize(const D3DVERTEXELEMENT9 *decl, DWORD stream_idx)
Definition: mesh.c:2324
D3DCOLORVALUE Diffuse
Definition: d3dx9mesh.h:267
GLbitfield flags
Definition: glext.h:7161
DECLARE_INTERFACE_(ID3DXBaseMesh, IUnknown)
Definition: d3dx9mesh.h:307
HRESULT WINAPI D3DXCreatePMeshFromStream(struct IStream *stream, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXPMesh **mesh)
struct _D3DXINTERSECTINFO * LPD3DXINTERSECTINFO
HRESULT WINAPI D3DXLoadPRTBufferFromFileW(const WCHAR *filename, ID3DXPRTBuffer **buffer)
unsigned char UCHAR
Definition: xmlstorage.h:181
struct _D3DXSHMATERIAL D3DXSHMATERIAL
struct _D3DXEFFECTDEFAULT D3DXEFFECTDEFAULT
HRESULT(WINAPI * LPD3DXUVATLASCB)(float complete, void *ctx)
Definition: d3dx9mesh.h:300
Definition: parse.h:22
struct _XFILECOMPRESSEDANIMATIONSET XFILECOMPRESSEDANIMATIONSET
static unsigned int palette_size(DWORD flags)
Definition: palette.c:241
GLuint GLuint stream
Definition: glext.h:7522
HRESULT WINAPI D3DXLoadPRTCompBufferFromFileA(const char *filename, ID3DXPRTCompBuffer **buffer)
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
HRESULT WINAPI D3DXConcatenateMeshes(struct ID3DXMesh **meshes, UINT mesh_count, DWORD flags, const D3DXMATRIX *geometry_matrices, const D3DXMATRIX *texture_matrices, const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh)
unsigned char BYTE
Definition: mem.h:68
BOOL WINAPI D3DXBoxBoundProbe(const D3DXVECTOR3 *vmin, const D3DXVECTOR3 *vmax, const D3DXVECTOR3 *ray_pos, const D3DXVECTOR3 *ray_dir)
Definition: mesh.c:1912
HRESULT WINAPI D3DXSaveMeshToXA(const char *filename, ID3DXMesh *mesh, const DWORD *adjacency, const D3DXMATERIAL *materials, const D3DXEFFECTINSTANCE *effect_instances, DWORD material_count, DWORD format)
struct ID3DXBaseMesh * LPD3DXBASEMESH
Definition: d3dx9mesh.h:172
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
static LARGE_INTEGER * frequency
Definition: time.c:106
_D3DXEFFECTDEFAULTTYPE
Definition: d3dx9mesh.h:139
D3DXATTRIBUTERANGE * LPD3DXATTRIBUTERANGE
Definition: d3dx9mesh.h:191
FLOAT Texcoords[8]
Definition: d3dx9mesh.h:234
enum _D3DXSHCOMPRESSQUALITYTYPE D3DXSHCOMPRESSQUALITYTYPE
HRESULT WINAPI D3DXGeneratePMesh(ID3DXMesh *mesh, const DWORD *adjacency, const D3DXATTRIBUTEWEIGHTS *attribute_weights, const float *vertex_weights, DWORD min_value, DWORD flags, ID3DXPMesh **pmesh)
GLenum GLenum GLenum input
Definition: glext.h:9031
HRESULT WINAPI D3DXComputeIMTFromTexture(struct ID3DXMesh *mesh, struct IDirect3DTexture9 *texture, DWORD texture_idx, DWORD options, LPD3DXUVATLASCB cb, void *ctx, struct ID3DXBuffer **out)
const GLdouble * v
Definition: gl.h:2040
HRESULT WINAPI D3DXValidPatchMesh(ID3DXPatchMesh *mesh, DWORD *degenerate_vertex_count, DWORD *degenerate_patch_count, ID3DXBuffer **errors)
enum _D3DXUVATLAS D3DXUVATLAS
HRESULT WINAPI D3DXCleanMesh(D3DXCLEANTYPE clean_type, ID3DXMesh *mesh_in, const DWORD *adjacency_in, ID3DXMesh **mesh_out, DWORD *adjacency_out, ID3DXBuffer **errors)
Definition: mesh.c:4002
HRESULT WINAPI D3DXTriPatchSize(const FLOAT *segment_count, DWORD *num_triangles, DWORD *num_vertices)
GLuint start
Definition: gl.h:1545
HRESULT WINAPI D3DXCreateSPMesh(ID3DXMesh *mesh, const DWORD *adjacency, const D3DXATTRIBUTEWEIGHTS *attribute_weights, const float *vertex_weights, ID3DXSPMesh **spmesh)
struct _D3DXMATERIAL * LPD3DXMATERIAL
#define min(a, b)
Definition: monoChain.cc:55
#define PURE
Definition: basetyps.h:64
unsigned int UINT
Definition: ndis.h:50
HRESULT WINAPI D3DXComputeBoundingBox(const D3DXVECTOR3 *first_pos, DWORD num_vertices, DWORD stride, D3DXVECTOR3 *vmin, D3DXVECTOR3 *vmax)
Definition: mesh.c:1965
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
HRESULT WINAPI D3DXComputeTangentFrameEx(ID3DXMesh *mesh_in, DWORD texture_in_semantic, DWORD texture_in_idx, DWORD u_partial_out_semantic, DWORD u_partial_out_idx, DWORD v_partial_out_semantic, DWORD v_partial_out_idx, DWORD normal_out_semantic, DWORD normal_out_idx, DWORD flags, const DWORD *adjacency, float partial_edge_threshold, float singular_point_threshold, float normal_edge_threshold, ID3DXMesh **mesh_out, ID3DXBuffer **buffer)
Definition: mesh.c:7320
HRESULT WINAPI D3DXFVFFromDeclarator(const D3DVERTEXELEMENT9 *decl, DWORD *fvf)
Definition: mesh.c:2135
HRESULT WINAPI D3DXCreatePRTCompBuffer(D3DXSHCOMPRESSQUALITYTYPE quality, UINT cluster_count, UINT pca_count, LPD3DXSHPRTSIMCB cb, void *ctx, ID3DXPRTBuffer *input, ID3DXPRTCompBuffer **buffer)
HRESULT WINAPI D3DXSHPRTCompSplitMeshSC(UINT *cluster_idx, UINT vertex_count, UINT cluster_count, UINT *scluster_ids, UINT scluster_count, void *index_buffer_in, BOOL ib_in_32bit, UINT face_count, ID3DXBuffer **index_buffer_out, UINT *index_buffer_size, BOOL ib_out_32bit, ID3DXBuffer **face_remap, ID3DXBuffer **vertex_data, UINT *vertex_data_length, UINT *sc_cluster_list, D3DXSHPRTSPLITMESHCLUSTERDATA *sc_data)
HRESULT WINAPI D3DXLoadMeshFromXInMemory(const void *data, DWORD data_size, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXMesh **mesh)
Definition: mesh.c:4198
enum _D3DTEXTUREFILTERTYPE D3DTEXTUREFILTERTYPE
HRESULT WINAPI D3DXTessellateTriPatch(struct IDirect3DVertexBuffer9 *buffer, const float *segment_count, const D3DVERTEXELEMENT9 *declaration, const D3DTRIPATCH_INFO *patch_info, struct ID3DXMesh *mesh)
_MAX_FVF_DECL_SIZE
Definition: d3dx9mesh.h:39
float FLOAT
Definition: typedefs.h:67
HRESULT WINAPI D3DXSavePRTBufferToFileA(const char *filename, ID3DXPRTBuffer *buffer)
unsigned int ULONG
Definition: retypes.h:1
UINT WINAPI D3DXGetDeclLength(const D3DVERTEXELEMENT9 *decl)
Definition: mesh.c:2355
HRESULT WINAPI D3DXCreateMeshFVF(DWORD face_count, DWORD vertex_count, DWORD flags, DWORD fvf, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh)
Definition: mesh.c:2596
struct _D3DXATTRIBUTERANGE D3DXATTRIBUTERANGE
HRESULT WINAPI D3DXComputeBoundingSphere(const D3DXVECTOR3 *first_pos, DWORD num_vertices, DWORD stride, D3DXVECTOR3 *center, FLOAT *radius)
Definition: mesh.c:1993
const GLbyte * weights
Definition: glext.h:6523
#define wrap(journal, var)
Definition: recovery.c:207
HRESULT WINAPI D3DXConvertMeshSubsetToStrips(struct ID3DXBaseMesh *mesh_in, DWORD attribute_id, DWORD ib_flags, struct IDirect3DIndexBuffer9 **index_buffer, DWORD *index_count, struct ID3DXBuffer **strip_lengths, DWORD *strip_count)
_D3DXTANGENT
Definition: d3dx9mesh.h:109
struct _D3DXPATCHINFO * LPD3DXPATCHINFO
HRESULT WINAPI D3DXCreatePatchMesh(const D3DXPATCHINFO *patch_info, DWORD patch_count, DWORD vertex_count, DWORD flags, const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXPatchMesh **mesh)
HRESULT WINAPI D3DXUVAtlasPartition(ID3DXMesh *mesh_in, UINT max_chart_count, float max_stretch_in, DWORD texture_idx, const DWORD *adjacency, const DWORD *false_edges, const float *imt_array, LPD3DXUVATLASCB cb, float cb_freq, void *ctx, DWORD flags, ID3DXMesh **mesh_out, ID3DXBuffer **face_partitioning_out, ID3DXBuffer **vertex_remap_out, ID3DXBuffer **adjacency_out, float *max_stretch_out, UINT *chart_count)
D3DXEFFECTDEFAULTTYPE Type
Definition: d3dx9mesh.h:202
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
DEFINE_GUID(IID_ID3DXBaseMesh, 0x7ed943dd, 0x52e8, 0x40b5, 0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30)
HRESULT WINAPI D3DXLoadMeshFromXA(const char *filename, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXMesh **mesh)
Definition: mesh.c:4052
int face_count
Definition: d3drm.c:2808
HRESULT WINAPI D3DXLoadMeshFromXW(const WCHAR *filename, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXMesh **mesh)
Definition: mesh.c:4080
enum _D3DXTANGENT D3DXTANGENT
struct ID3DXPMesh * LPD3DXPMESH
Definition: d3dx9mesh.h:174
_D3DXWELDEPSILONSFLAGS
Definition: d3dx9mesh.h:147
HRESULT WINAPI D3DXCreatePRTEngine(ID3DXMesh *mesh, DWORD *adjacency, BOOL extract_uv, ID3DXMesh *blocker_mesh, ID3DXPRTEngine **engine)
static BOOL complete
Definition: htmldoc.c:198
_D3DXMESH
Definition: d3dx9mesh.h:44
HRESULT WINAPI D3DXCreateBuffer(DWORD size, ID3DXBuffer **buffer)
Definition: core.c:129
HRESULT WINAPI D3DXUVAtlasPack(ID3DXMesh *mesh, UINT width, UINT height, float gutter, DWORD texture_idx, const DWORD *partition_result_adjacency, LPD3DXUVATLASCB cb, float cb_freq, void *ctx, DWORD flags, ID3DXBuffer *face_partitioning)
enum _D3DXIMT D3DXIMT
enum _D3DXEFFECTDEFAULTTYPE D3DXEFFECTDEFAULTTYPE
HRESULT WINAPI D3DXLoadPRTBufferFromFileA(const char *filename, ID3DXPRTBuffer **buffer)
struct _D3DXEFFECTDEFAULT * LPD3DXEFFECTDEFAULT
HRESULT WINAPI D3DXIntersectSubset(ID3DXBaseMesh *mesh, DWORD attribute_id, const D3DXVECTOR3 *ray_position, const D3DXVECTOR3 *ray_direction, BOOL *hit, DWORD *face_idx, float *u, float *v, float *distance, ID3DXBuffer **hits, DWORD *hit_count)
_D3DXPATCHMESHTYPE
Definition: d3dx9mesh.h:81
char * pTextureFilename
Definition: d3dx9mesh.h:196
HRESULT WINAPI D3DXSplitMesh(ID3DXMesh *mesh_in, const DWORD *adjacency_in, const DWORD max_size, const DWORD flags, DWORD *mesh_out_count, ID3DXBuffer **mesh_out, ID3DXBuffer **adjacency_out, ID3DXBuffer **face_remap_out, ID3DXBuffer **vertex_remap_out)
struct ID3DXMesh * LPD3DXMESH
Definition: d3dx9mesh.h:173
HRESULT WINAPI D3DXLoadMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXMesh **mesh)
GLuint const GLchar * name
Definition: glext.h:6031