/[cvs]/api/include/d3dx8mesh.h
ViewVC logotype

Contents of /api/include/d3dx8mesh.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Sun Jul 1 20:47:59 2001 UTC (22 years, 10 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
First import

1 //////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (C) 1998 Microsoft Corporation. All Rights Reserved.
4 //
5 // File: d3dx8mesh.h
6 // Content: D3DX mesh types and functions
7 //
8 //////////////////////////////////////////////////////////////////////////////
9
10 #include "d3dx8.h"
11
12 #ifndef __D3DX8MESH_H__
13 #define __D3DX8MESH_H__
14
15 #include "dxfile.h" // defines LPDIRECTXFILEDATA
16
17 // {A69BA991-1F7D-11d3-B929-00C04F68DC23}
18 DEFINE_GUID(IID_ID3DXBaseMesh,
19 0xa69ba991, 0x1f7d, 0x11d3, 0xb9, 0x29, 0x0, 0xc0, 0x4f, 0x68, 0xdc, 0x23);
20
21 // {9D84AC46-6B90-49a9-A721-085C7A3E3DAE}
22 DEFINE_GUID(IID_ID3DXMesh,
23 0x9d84ac46, 0x6b90, 0x49a9, 0xa7, 0x21, 0x8, 0x5c, 0x7a, 0x3e, 0x3d, 0xae);
24
25 // {15981AA8-1A05-48e3-BBE7-FF5D49654E3F}
26 DEFINE_GUID(IID_ID3DXPMesh,
27 0x15981aa8, 0x1a05, 0x48e3, 0xbb, 0xe7, 0xff, 0x5d, 0x49, 0x65, 0x4e, 0x3f);
28
29 // {BC3BBDE2-1F7D-11d3-B929-00C04F68DC23}
30 DEFINE_GUID(IID_ID3DXSPMesh,
31 0xbc3bbde2, 0x1f7d, 0x11d3, 0xb9, 0x29, 0x0, 0xc0, 0x4f, 0x68, 0xdc, 0x23);
32
33 // {82A53844-F322-409e-A2E9-992E1104069D}
34 DEFINE_GUID(IID_ID3DXSkinMesh,
35 0x82a53844, 0xf322, 0x409e, 0xa2, 0xe9, 0x99, 0x2e, 0x11, 0x4, 0x6, 0x9d);
36
37
38 enum _D3DXMESH {
39 D3DXMESH_32BIT = 0x001, // If set, then use 32 bit indices, if not set use 16 bit indices. 32BIT meshes currently not supported on ID3DXSkinMesh object
40 D3DXMESH_DONOTCLIP = 0x002, // Use D3DUSAGE_DONOTCLIP for VB & IB.
41 D3DXMESH_POINTS = 0x004, // Use D3DUSAGE_POINTS for VB & IB.
42 D3DXMESH_RTPATCHES = 0x008, // Use D3DUSAGE_RTPATCHES for VB & IB.
43 D3DXMESH_NPATCHES = 0x4000,// Use D3DUSAGE_NPATCHES for VB & IB.
44 D3DXMESH_VB_SYSTEMMEM = 0x010, // Use D3DPOOL_SYSTEMMEM for VB. Overrides D3DXMESH_MANAGEDVERTEXBUFFER
45 D3DXMESH_VB_MANAGED = 0x020, // Use D3DPOOL_MANAGED for VB.
46 D3DXMESH_VB_WRITEONLY = 0x040, // Use D3DUSAGE_WRITEONLY for VB.
47 D3DXMESH_VB_DYNAMIC = 0x080, // Use D3DUSAGE_DYNAMIC for VB.
48 D3DXMESH_IB_SYSTEMMEM = 0x100, // Use D3DPOOL_SYSTEMMEM for IB. Overrides D3DXMESH_MANAGEDINDEXBUFFER
49 D3DXMESH_IB_MANAGED = 0x200, // Use D3DPOOL_MANAGED for IB.
50 D3DXMESH_IB_WRITEONLY = 0x400, // Use D3DUSAGE_WRITEONLY for IB.
51 D3DXMESH_IB_DYNAMIC = 0x800, // Use D3DUSAGE_DYNAMIC for IB.
52
53 D3DXMESH_VB_SHARE = 0x1000, // Valid for Clone* calls only, forces cloned mesh/pmesh to share vertex buffer
54
55 D3DXMESH_USEHWONLY = 0x2000, // Valid for ID3DXSkinMesh::ConvertToBlendedMesh
56
57 // Helper options
58 D3DXMESH_SYSTEMMEM = 0x110, // D3DXMESH_VB_SYSTEMMEM | D3DXMESH_IB_SYSTEMMEM
59 D3DXMESH_MANAGED = 0x220, // D3DXMESH_VB_MANAGED | D3DXMESH_IB_MANAGED
60 D3DXMESH_WRITEONLY = 0x440, // D3DXMESH_VB_WRITEONLY | D3DXMESH_IB_WRITEONLY
61 D3DXMESH_DYNAMIC = 0x880, // D3DXMESH_VB_DYNAMIC | D3DXMESH_IB_DYNAMIC
62
63 };
64
65 // option field values for specifying min value in D3DXGeneratePMesh and D3DXSimplifyMesh
66 enum _D3DXMESHSIMP
67 {
68 D3DXMESHSIMP_VERTEX = 0x1,
69 D3DXMESHSIMP_FACE = 0x2,
70
71 };
72
73 enum _MAX_FVF_DECL_SIZE
74 {
75 MAX_FVF_DECL_SIZE = 20
76 };
77
78 typedef struct ID3DXBaseMesh *LPD3DXBASEMESH;
79 typedef struct ID3DXMesh *LPD3DXMESH;
80 typedef struct ID3DXPMesh *LPD3DXPMESH;
81 typedef struct ID3DXSPMesh *LPD3DXSPMESH;
82 typedef struct ID3DXSkinMesh *LPD3DXSKINMESH;
83
84 typedef struct _D3DXATTRIBUTERANGE
85 {
86 DWORD AttribId;
87 DWORD FaceStart;
88 DWORD FaceCount;
89 DWORD VertexStart;
90 DWORD VertexCount;
91 } D3DXATTRIBUTERANGE;
92
93 typedef D3DXATTRIBUTERANGE* LPD3DXATTRIBUTERANGE;
94
95 #ifdef __cplusplus
96 extern "C" {
97 #endif //__cplusplus
98 struct D3DXMATERIAL
99 {
100 D3DMATERIAL8 MatD3D;
101 LPSTR pTextureFilename;
102 };
103 typedef struct D3DXMATERIAL *LPD3DXMATERIAL;
104 #ifdef __cplusplus
105 }
106 #endif //__cplusplus
107
108 typedef struct _D3DXATTRIBUTEWEIGHTS
109 {
110 FLOAT Position;
111 FLOAT Boundary;
112 FLOAT Normal;
113 FLOAT Diffuse;
114 FLOAT Specular;
115 FLOAT Tex[8];
116 } D3DXATTRIBUTEWEIGHTS;
117
118 typedef D3DXATTRIBUTEWEIGHTS* LPD3DXATTRIBUTEWEIGHTS;
119
120 DECLARE_INTERFACE_(ID3DXBaseMesh, IUnknown)
121 {
122 // IUnknown
123 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
124 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
125 STDMETHOD_(ULONG, Release)(THIS) PURE;
126
127 // ID3DXBaseMesh
128 STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
129 STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
130 STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
131 STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
132 STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
133 STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
134 STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
135 STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
136 DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
137 STDMETHOD(CloneMesh)(THIS_ DWORD Options,
138 CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
139 STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
140 STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
141 STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
142 STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
143 STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
144 STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
145 STDMETHOD(GetAttributeTable)(
146 THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
147 };
148
149 DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
150 {
151 // IUnknown
152 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
153 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
154 STDMETHOD_(ULONG, Release)(THIS) PURE;
155
156 // ID3DXBaseMesh
157 STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
158 STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
159 STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
160 STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
161 STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
162 STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
163 STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
164 STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
165 DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
166 STDMETHOD(CloneMesh)(THIS_ DWORD Options,
167 CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
168 STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
169 STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
170 STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
171 STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
172 STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
173 STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
174 STDMETHOD(GetAttributeTable)(
175 THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
176
177 // ID3DXMesh
178 STDMETHOD(LockAttributeBuffer)(THIS_ DWORD Flags, DWORD** ppData) PURE;
179 STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
180 STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
181 STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
182 STDMETHOD(GenerateAdjacency)(THIS_ FLOAT fEpsilon, DWORD* pAdjacency) PURE;
183 STDMETHOD(Optimize)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
184 DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap,
185 LPD3DXMESH* ppOptMesh) PURE;
186 STDMETHOD(OptimizeInplace)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
187 DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap) PURE;
188 };
189
190 DECLARE_INTERFACE_(ID3DXPMesh, ID3DXBaseMesh)
191 {
192 // IUnknown
193 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
194 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
195 STDMETHOD_(ULONG, Release)(THIS) PURE;
196
197 // ID3DXBaseMesh
198 STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
199 STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
200 STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
201 STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
202 STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
203 STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
204 STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
205 STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
206 DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
207 STDMETHOD(CloneMesh)(THIS_ DWORD Options,
208 CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
209 STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
210 STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
211 STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
212 STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
213 STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
214 STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
215 STDMETHOD(GetAttributeTable)(
216 THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
217
218 // ID3DXPMesh
219 STDMETHOD(ClonePMeshFVF)(THIS_ DWORD Options,
220 DWORD FVF, LPDIRECT3DDEVICE8 pD3D, LPD3DXPMESH* ppCloneMesh) PURE;
221 STDMETHOD(ClonePMesh)(THIS_ DWORD Options,
222 CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3D, LPD3DXPMESH* ppCloneMesh) PURE;
223 STDMETHOD(SetNumFaces)(THIS_ DWORD Faces) PURE;
224 STDMETHOD(SetNumVertices)(THIS_ DWORD Vertices) PURE;
225 STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
226 STDMETHOD_(DWORD, GetMinFaces)(THIS) PURE;
227 STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
228 STDMETHOD_(DWORD, GetMinVertices)(THIS) PURE;
229 STDMETHOD(Save)(THIS_ IStream *pStream, LPD3DXMATERIAL pMaterials, DWORD NumMaterials) PURE;
230
231 STDMETHOD(Optimize)(THIS_ DWORD Flags, DWORD* pAdjacencyOut,
232 DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap,
233 LPD3DXMESH* ppOptMesh) PURE;
234 STDMETHOD(GetAdjacency)(THIS_ DWORD* pAdjacency) PURE;
235 };
236
237 DECLARE_INTERFACE_(ID3DXSPMesh, IUnknown)
238 {
239 // IUnknown
240 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
241 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
242 STDMETHOD_(ULONG, Release)(THIS) PURE;
243
244 // ID3DXSPMesh
245 STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
246 STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
247 STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
248 STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
249 STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
250 STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
251 STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
252 DWORD FVF, LPDIRECT3DDEVICE8 pD3D, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
253 STDMETHOD(CloneMesh)(THIS_ DWORD Options,
254 CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
255 STDMETHOD(ClonePMeshFVF)(THIS_ DWORD Options,
256 DWORD FVF, LPDIRECT3DDEVICE8 pD3D, DWORD *pVertexRemapOut, LPD3DXPMESH* ppCloneMesh) PURE;
257 STDMETHOD(ClonePMesh)(THIS_ DWORD Options,
258 CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3D, DWORD *pVertexRemapOut, LPD3DXPMESH* ppCloneMesh) PURE;
259 STDMETHOD(ReduceFaces)(THIS_ DWORD Faces) PURE;
260 STDMETHOD(ReduceVertices)(THIS_ DWORD Vertices) PURE;
261 STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
262 STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
263 };
264
265 #define UNUSED16 (0xffff)
266 #define UNUSED32 (0xffffffff)
267
268 // ID3DXMesh::Optimize options
269 enum _D3DXMESHOPT {
270 D3DXMESHOPT_COMPACT = 0x001,
271 D3DXMESHOPT_ATTRSORT = 0x002,
272 D3DXMESHOPT_VERTEXCACHE = 0x004,
273 D3DXMESHOPT_STRIPREORDER = 0x008,
274 D3DXMESHOPT_IGNOREVERTS = 0x010, // optimize faces only, don't touch vertices
275 D3DXMESHOPT_SHAREVB = 0x020,
276 };
277
278 // Subset of the mesh that has the same attribute and bone combination.
279 // This subset can be rendered in a single draw call
280 typedef struct _D3DXBONECOMBINATION
281 {
282 DWORD AttribId;
283 DWORD FaceStart;
284 DWORD FaceCount;
285 DWORD VertexStart;
286 DWORD VertexCount;
287 DWORD* BoneId;
288 } D3DXBONECOMBINATION, *LPD3DXBONECOMBINATION;
289
290 DECLARE_INTERFACE_(ID3DXSkinMesh, IUnknown)
291 {
292 // IUnknown
293 STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
294 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
295 STDMETHOD_(ULONG, Release)(THIS) PURE;
296
297 // ID3DXMesh
298 STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
299 STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
300 STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
301 STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
302 STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
303 STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
304 STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
305 STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
306 STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, BYTE** ppData) PURE;
307 STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
308 STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, BYTE** ppData) PURE;
309 STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
310 STDMETHOD(LockAttributeBuffer)(THIS_ DWORD flags, DWORD** ppData) PURE;
311 STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
312 // ID3DXSkinMesh
313 STDMETHOD_(DWORD, GetNumBones)(THIS) PURE;
314 STDMETHOD(GetOriginalMesh)(THIS_ LPD3DXMESH* ppMesh) PURE;
315 STDMETHOD(SetBoneInfluence)(THIS_ DWORD bone, DWORD numInfluences, CONST DWORD* vertices, CONST FLOAT* weights) PURE;
316 STDMETHOD_(DWORD, GetNumBoneInfluences)(THIS_ DWORD bone) PURE;
317 STDMETHOD(GetBoneInfluence)(THIS_ DWORD bone, DWORD* vertices, FLOAT* weights) PURE;
318 STDMETHOD(GetMaxVertexInfluences)(THIS_ DWORD* maxVertexInfluences) PURE;
319 STDMETHOD(GetMaxFaceInfluences)(THIS_ DWORD* maxFaceInfluences) PURE;
320 STDMETHOD(ConvertToBlendedMesh)(THIS_ DWORD options, CONST LPDWORD pAdjacencyIn, LPDWORD pAdjacencyOut,
321 DWORD* pNumBoneCombinations, LPD3DXBUFFER* ppBoneCombinationTable, LPD3DXMESH* ppMesh) PURE;
322 STDMETHOD(ConvertToIndexedBlendedMesh)(THIS_ DWORD options,
323 CONST LPDWORD pAdjacencyIn,
324 DWORD paletteSize,
325 LPDWORD pAdjacencyOut,
326 DWORD* pNumBoneCombinations,
327 LPD3DXBUFFER* ppBoneCombinationTable,
328 LPD3DXMESH* ppMesh) PURE;
329 STDMETHOD(GenerateSkinnedMesh)(THIS_ DWORD options, FLOAT minWeight, CONST LPDWORD pAdjacencyIn, LPDWORD pAdjacencyOut, LPD3DXMESH* ppMesh) PURE;
330 STDMETHOD(UpdateSkinnedMesh)(THIS_ CONST D3DXMATRIX* pBoneTransforms, LPD3DXMESH pMesh) PURE;
331 };
332
333 #ifdef __cplusplus
334 extern "C" {
335 #endif //__cplusplus
336
337 HRESULT WINAPI
338 D3DXCreateMesh(
339 DWORD NumFaces,
340 DWORD NumVertices,
341 DWORD Options,
342 CONST DWORD *pDeclaration,
343 LPDIRECT3DDEVICE8 pD3D,
344 LPD3DXMESH* ppMesh);
345
346 HRESULT WINAPI
347 D3DXCreateMeshFVF(
348 DWORD NumFaces,
349 DWORD NumVertices,
350 DWORD Options,
351 DWORD FVF,
352 LPDIRECT3DDEVICE8 pD3D,
353 LPD3DXMESH* ppMesh);
354
355 HRESULT WINAPI
356 D3DXCreateSPMesh(
357 LPD3DXMESH pMesh,
358 CONST DWORD* pAdjacency,
359 CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
360 CONST FLOAT *pVertexWeights,
361 LPD3DXSPMESH* ppSMesh);
362
363 // clean a mesh up for simplification, try to make manifold
364 HRESULT WINAPI
365 D3DXCleanMesh(
366 LPD3DXMESH pMeshIn,
367 CONST DWORD* pAdjacency,
368 LPD3DXMESH* ppMeshOut);
369
370 HRESULT WINAPI
371 D3DXValidMesh(
372 LPD3DXMESH pMeshIn,
373 CONST DWORD* pAdjacency);
374
375 HRESULT WINAPI
376 D3DXGeneratePMesh(
377 LPD3DXMESH pMesh,
378 CONST DWORD* pAdjacency,
379 CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
380 CONST FLOAT *pVertexWeights,
381 DWORD MinValue,
382 DWORD Options,
383 LPD3DXPMESH* ppPMesh);
384
385 HRESULT WINAPI
386 D3DXSimplifyMesh(
387 LPD3DXMESH pMesh,
388 CONST DWORD* pAdjacency,
389 CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
390 CONST FLOAT *pVertexWeights,
391 DWORD MinValue,
392 DWORD Options,
393 LPD3DXMESH* ppMesh);
394
395 HRESULT WINAPI
396 D3DXComputeBoundingSphere(
397 PVOID pPointsFVF,
398 DWORD NumVertices,
399 DWORD FVF,
400 D3DXVECTOR3 *pCenter,
401 FLOAT *pRadius);
402
403 HRESULT WINAPI
404 D3DXComputeBoundingBox(
405 PVOID pPointsFVF,
406 DWORD NumVertices,
407 DWORD FVF,
408 D3DXVECTOR3 *pMin,
409 D3DXVECTOR3 *pMax);
410
411 HRESULT WINAPI
412 D3DXComputeNormals(
413 LPD3DXBASEMESH pMesh);
414
415 HRESULT WINAPI
416 D3DXCreateBuffer(
417 DWORD NumBytes,
418 LPD3DXBUFFER *ppBuffer);
419
420
421 HRESULT WINAPI
422 D3DXLoadMeshFromX(
423 LPSTR pFilename,
424 DWORD Options,
425 LPDIRECT3DDEVICE8 pD3D,
426 LPD3DXBUFFER *ppAdjacency,
427 LPD3DXBUFFER *ppMaterials,
428 PDWORD pNumMaterials,
429 LPD3DXMESH *ppMesh);
430
431 HRESULT WINAPI
432 D3DXSaveMeshToX(
433 LPSTR pFilename,
434 LPD3DXMESH pMesh,
435 CONST DWORD* pAdjacency,
436 CONST LPD3DXMATERIAL pMaterials,
437 DWORD NumMaterials,
438 DWORD Format
439 );
440
441 HRESULT WINAPI
442 D3DXCreatePMeshFromStream(
443 IStream *pStream,
444 DWORD Options,
445 LPDIRECT3DDEVICE8 pD3DDevice,
446 LPD3DXBUFFER *ppMaterials,
447 DWORD* pNumMaterials,
448 LPD3DXPMESH *ppPMesh);
449
450 HRESULT WINAPI
451 D3DXCreateSkinMesh(
452 DWORD numFaces,
453 DWORD numVertices,
454 DWORD numBones,
455 DWORD options,
456 CONST DWORD *pDeclaration,
457 LPDIRECT3DDEVICE8 pD3D,
458 LPD3DXSKINMESH* ppSkinMesh);
459
460 HRESULT WINAPI
461 D3DXCreateSkinMeshFVF(
462 DWORD numFaces,
463 DWORD numVertices,
464 DWORD numBones,
465 DWORD options,
466 DWORD fvf,
467 LPDIRECT3DDEVICE8 pD3D,
468 LPD3DXSKINMESH* ppSkinMesh);
469
470 HRESULT WINAPI
471 D3DXCreateSkinMeshFromMesh(
472 LPD3DXMESH pMesh,
473 DWORD numBones,
474 LPD3DXSKINMESH* ppSkinMesh);
475
476 HRESULT WINAPI
477 D3DXLoadMeshFromXof(
478 LPDIRECTXFILEDATA pXofObjMesh,
479 DWORD Options,
480 LPDIRECT3DDEVICE8 pD3DDevice,
481 LPD3DXBUFFER *ppAdjacency,
482 LPD3DXBUFFER *ppMaterials,
483 PDWORD pNumMaterials,
484 LPD3DXMESH *ppMesh);
485
486 HRESULT WINAPI
487 D3DXLoadSkinMeshFromXof(
488 LPDIRECTXFILEDATA pxofobjMesh,
489 DWORD options,
490 LPDIRECT3DDEVICE8 pD3D,
491 LPD3DXBUFFER* ppAdjacency,
492 LPD3DXBUFFER* ppMaterials,
493 PDWORD pMatOut,
494 LPD3DXBUFFER* ppBoneNames,
495 LPD3DXBUFFER* ppBoneTransforms,
496 LPD3DXSKINMESH* ppMesh);
497
498 HRESULT WINAPI
499 D3DXTesselateMesh(
500 LPD3DXMESH pMeshIn,
501 CONST DWORD* pAdjacency,
502 FLOAT NumSegs,
503 BOOL QuadraticInterpNormals, // if false use linear intrep for normals, if true use quadratic
504 LPD3DXMESH *ppMeshOut);
505
506 HRESULT WINAPI
507 D3DXDeclaratorFromFVF(
508 DWORD FVF,
509 DWORD Declaration[MAX_FVF_DECL_SIZE]);
510
511 HRESULT WINAPI
512 D3DXFVFFromDeclarator(
513 CONST DWORD *pDeclarator,
514 DWORD *pFVF);
515
516 HRESULT WINAPI
517 D3DXWeldVertices(
518 CONST LPD3DXMESH pMesh,
519 float fEpsilon,
520 CONST DWORD *rgdwAdjacencyIn,
521 DWORD *rgdwAdjacencyOut,
522 DWORD* pFaceRemap,
523 LPD3DXBUFFER *ppbufVertexRemap);
524
525 HRESULT WINAPI
526 D3DXIntersect(
527 LPD3DXBASEMESH pMesh,
528 CONST D3DXVECTOR3 *pRayPos,
529 CONST D3DXVECTOR3 *pRayDir,
530 BOOL *pHit,
531 DWORD *pFaceIndex,
532 FLOAT *pU,
533 FLOAT *pV,
534 FLOAT *pDist);
535
536 BOOL WINAPI
537 D3DXSphereBoundProbe(
538 CONST D3DXVECTOR3 *pvCenter,
539 FLOAT fRadius,
540 D3DXVECTOR3 *pvRayPosition,
541 D3DXVECTOR3 *pvRayDirection);
542
543 BOOL WINAPI
544 D3DXBoxBoundProbe(
545 CONST D3DXVECTOR3 *pvMin,
546 CONST D3DXVECTOR3 *pvMax,
547 D3DXVECTOR3 *pvRayPosition,
548 D3DXVECTOR3 *pvRayDirection);
549
550 enum _D3DXERR {
551 D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
552 D3DXERR_INVALIDMESH = MAKE_DDHRESULT(2901),
553 D3DXERR_CANNOTATTRSORT = MAKE_DDHRESULT(2902),
554 D3DXERR_SKINNINGNOTSUPPORTED = MAKE_DDHRESULT(2903),
555 D3DXERR_TOOMANYINFLUENCES = MAKE_DDHRESULT(2904),
556 D3DXERR_INVALIDDATA = MAKE_DDHRESULT(2905),
557 };
558
559 #ifdef __cplusplus
560 }
561 #endif //__cplusplus
562
563 #endif //__D3DX8MESH_H__
564
565

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26