📄 d3dx9mesh.h
字号:
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
CONST FLOAT *pVertexWeights,
LPD3DXSPMESH* ppSMesh);
// clean a mesh up for simplification, try to make manifold
HRESULT WINAPI
D3DXCleanMesh(
D3DXCLEANTYPE CleanType,
LPD3DXMESH pMeshIn,
CONST DWORD* pAdjacencyIn,
LPD3DXMESH* ppMeshOut,
DWORD* pAdjacencyOut,
LPD3DXBUFFER* ppErrorsAndWarnings);
HRESULT WINAPI
D3DXValidMesh(
LPD3DXMESH pMeshIn,
CONST DWORD* pAdjacency,
LPD3DXBUFFER* ppErrorsAndWarnings);
HRESULT WINAPI
D3DXGeneratePMesh(
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
CONST FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH* ppPMesh);
HRESULT WINAPI
D3DXSimplifyMesh(
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
CONST FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXMESH* ppMesh);
HRESULT WINAPI
D3DXComputeBoundingSphere(
CONST D3DXVECTOR3 *pFirstPosition, // pointer to first position
DWORD NumVertices,
DWORD dwStride, // count in bytes to subsequent position vectors
D3DXVECTOR3 *pCenter,
FLOAT *pRadius);
HRESULT WINAPI
D3DXComputeBoundingBox(
CONST D3DXVECTOR3 *pFirstPosition, // pointer to first position
DWORD NumVertices,
DWORD dwStride, // count in bytes to subsequent position vectors
D3DXVECTOR3 *pMin,
D3DXVECTOR3 *pMax);
HRESULT WINAPI
D3DXComputeNormals(
LPD3DXBASEMESH pMesh,
CONST DWORD *pAdjacency);
HRESULT WINAPI
D3DXCreateBuffer(
DWORD NumBytes,
LPD3DXBUFFER *ppBuffer);
HRESULT WINAPI
D3DXLoadMeshFromXA(
LPCSTR pFilename,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
HRESULT WINAPI
D3DXLoadMeshFromXW(
LPCWSTR pFilename,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
#ifdef UNICODE
#define D3DXLoadMeshFromX D3DXLoadMeshFromXW
#else
#define D3DXLoadMeshFromX D3DXLoadMeshFromXA
#endif
HRESULT WINAPI
D3DXLoadMeshFromXInMemory(
LPCVOID Memory,
DWORD SizeOfMemory,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
HRESULT WINAPI
D3DXLoadMeshFromXResource(
HMODULE Module,
LPCSTR Name,
LPCSTR Type,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
HRESULT WINAPI
D3DXSaveMeshToXA(
LPCSTR pFilename,
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST D3DXMATERIAL* pMaterials,
CONST D3DXEFFECTINSTANCE* pEffectInstances,
DWORD NumMaterials,
DWORD Format
);
HRESULT WINAPI
D3DXSaveMeshToXW(
LPCWSTR pFilename,
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST D3DXMATERIAL* pMaterials,
CONST D3DXEFFECTINSTANCE* pEffectInstances,
DWORD NumMaterials,
DWORD Format
);
#ifdef UNICODE
#define D3DXSaveMeshToX D3DXSaveMeshToXW
#else
#define D3DXSaveMeshToX D3DXSaveMeshToXA
#endif
HRESULT WINAPI
D3DXCreatePMeshFromStream(
IStream *pStream,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER *ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
DWORD* pNumMaterials,
LPD3DXPMESH *ppPMesh);
// Creates a skin info object based on the number of vertices, number of bones, and a declaration describing the vertex layout of the target vertices
// The bone names and initial bone transforms are not filled in the skin info object by this method.
HRESULT WINAPI
D3DXCreateSkinInfo(
DWORD NumVertices,
CONST D3DVERTEXELEMENT9 *pDeclaration,
DWORD NumBones,
LPD3DXSKININFO* ppSkinInfo);
// Creates a skin info object based on the number of vertices, number of bones, and a FVF describing the vertex layout of the target vertices
// The bone names and initial bone transforms are not filled in the skin info object by this method.
HRESULT WINAPI
D3DXCreateSkinInfoFVF(
DWORD NumVertices,
DWORD FVF,
DWORD NumBones,
LPD3DXSKININFO* ppSkinInfo);
#ifdef __cplusplus
}
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXLoadMeshFromXof(
LPD3DXFILEDATA pxofMesh,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
// This similar to D3DXLoadMeshFromXof, except also returns skinning info if present in the file
// If skinning info is not present, ppSkinInfo will be NULL
HRESULT WINAPI
D3DXLoadSkinMeshFromXof(
LPD3DXFILEDATA pxofMesh,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER* ppAdjacency,
LPD3DXBUFFER* ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
DWORD *pMatOut,
LPD3DXSKININFO* ppSkinInfo,
LPD3DXMESH* ppMesh);
// The inverse of D3DXConvertTo{Indexed}BlendedMesh() functions. It figures out the skinning info from
// the mesh and the bone combination table and populates a skin info object with that data. The bone
// names and initial bone transforms are not filled in the skin info object by this method. This works
// with either a non-indexed or indexed blended mesh. It examines the FVF or declarator of the mesh to
// determine what type it is.
HRESULT WINAPI
D3DXCreateSkinInfoFromBlendedMesh(
LPD3DXBASEMESH pMesh,
DWORD NumBones,
CONST D3DXBONECOMBINATION *pBoneCombinationTable,
LPD3DXSKININFO* ppSkinInfo);
HRESULT WINAPI
D3DXTessellateNPatches(
LPD3DXMESH pMeshIn,
CONST DWORD* pAdjacencyIn,
FLOAT NumSegs,
BOOL QuadraticInterpNormals, // if false use linear intrep for normals, if true use quadratic
LPD3DXMESH *ppMeshOut,
LPD3DXBUFFER *ppAdjacencyOut);
//generates implied outputdecl from input decl
//the decl generated from this should be used to generate the output decl for
//the tessellator subroutines.
HRESULT WINAPI
D3DXGenerateOutputDecl(
D3DVERTEXELEMENT9 *pOutput,
CONST D3DVERTEXELEMENT9 *pInput);
//loads patches from an XFileData
//since an X file can have up to 6 different patch meshes in it,
//returns them in an array - pNumPatches will contain the number of
//meshes in the actual file.
HRESULT WINAPI
D3DXLoadPatchMeshFromXof(
LPD3DXFILEDATA pXofObjMesh,
DWORD Options,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXBUFFER *ppMaterials,
LPD3DXBUFFER *ppEffectInstances,
PDWORD pNumMaterials,
LPD3DXPATCHMESH *ppMesh);
//computes the size a single rect patch.
HRESULT WINAPI
D3DXRectPatchSize(
CONST FLOAT *pfNumSegs, //segments for each edge (4)
DWORD *pdwTriangles, //output number of triangles
DWORD *pdwVertices); //output number of vertices
//computes the size of a single triangle patch
HRESULT WINAPI
D3DXTriPatchSize(
CONST FLOAT *pfNumSegs, //segments for each edge (3)
DWORD *pdwTriangles, //output number of triangles
DWORD *pdwVertices); //output number of vertices
//tessellates a patch into a created mesh
//similar to D3D RT patch
HRESULT WINAPI
D3DXTessellateRectPatch(
LPDIRECT3DVERTEXBUFFER9 pVB,
CONST FLOAT *pNumSegs,
CONST D3DVERTEXELEMENT9 *pdwInDecl,
CONST D3DRECTPATCH_INFO *pRectPatchInfo,
LPD3DXMESH pMesh);
HRESULT WINAPI
D3DXTessellateTriPatch(
LPDIRECT3DVERTEXBUFFER9 pVB,
CONST FLOAT *pNumSegs,
CONST D3DVERTEXELEMENT9 *pInDecl,
CONST D3DTRIPATCH_INFO *pTriPatchInfo,
LPD3DXMESH pMesh);
//creates an NPatch PatchMesh from a D3DXMESH
HRESULT WINAPI
D3DXCreateNPatchMesh(
LPD3DXMESH pMeshSysMem,
LPD3DXPATCHMESH *pPatchMesh);
//creates a patch mesh
HRESULT WINAPI
D3DXCreatePatchMesh(
CONST D3DXPATCHINFO *pInfo, //patch type
DWORD dwNumPatches, //number of patches
DWORD dwNumVertices, //number of control vertices
DWORD dwOptions, //options
CONST D3DVERTEXELEMENT9 *pDecl, //format of control vertices
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXPATCHMESH *pPatchMesh);
//returns the number of degenerates in a patch mesh -
//text output put in string.
HRESULT WINAPI
D3DXValidPatchMesh(LPD3DXPATCHMESH pMesh,
DWORD *dwcDegenerateVertices,
DWORD *dwcDegeneratePatches,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -