| 1 |
/***********************************************************************\ |
|---|
| 2 |
* d3dx10mesh.d * |
|---|
| 3 |
* * |
|---|
| 4 |
* Windows API header module * |
|---|
| 5 |
* * |
|---|
| 6 |
* Placed into public domain * |
|---|
| 7 |
\***********************************************************************/ |
|---|
| 8 |
module win32.directx.d3dx10mesh; |
|---|
| 9 |
|
|---|
| 10 |
private import win32.windows; |
|---|
| 11 |
private import win32.directx.d3d10; |
|---|
| 12 |
private import win32.directx.d3dx10; |
|---|
| 13 |
|
|---|
| 14 |
extern(C) const GUID IID_ID3DX10BaseMesh = {0x7ed943dd, 0x52e8, 0x40b5, [0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30]}; |
|---|
| 15 |
extern(C) const GUID IID_ID3DX10MeshBuffer = {0x4b0d117, 0x1041, 0x46b1, [0xaa, 0x8a, 0x39, 0x52, 0x84, 0x8b, 0xa2, 0x2e]}; |
|---|
| 16 |
extern(C) const GUID IID_ID3DX10Mesh = {0x4020e5c2, 0x1403, 0x4929, [0x88, 0x3f, 0xe2, 0xe8, 0x49, 0xfa, 0xc1, 0x95]}; |
|---|
| 17 |
extern(C) const GUID IID_ID3DX10PMesh = {0x8875769a, 0xd579, 0x4088, [0xaa, 0xeb, 0x53, 0x4d, 0x1a, 0xd8, 0x4e, 0x96]}; |
|---|
| 18 |
extern(C) const GUID IID_ID3DX10SPMesh = {0x667ea4c7, 0xf1cd, 0x4386, [0xb5, 0x23, 0x7c, 0x2, 0x90, 0xb8, 0x3c, 0xc5]}; |
|---|
| 19 |
extern(C) const GUID IID_ID3DX10PatchMesh = {0x3ce6cc22, 0xdbf2, 0x44f4, [0x89, 0x4d, 0xf9, 0xc3, 0x4a, 0x33, 0x71, 0x39]}; |
|---|
| 20 |
|
|---|
| 21 |
enum D3DX10_MESH { |
|---|
| 22 |
D3DX10_MESH_32_BIT = 0x001, |
|---|
| 23 |
D3DX10_MESH_GS_ADJACENCY = 0x004 |
|---|
| 24 |
} |
|---|
| 25 |
|
|---|
| 26 |
struct D3DX10_ATTRIBUTE_RANGE { |
|---|
| 27 |
UINT AttribId; |
|---|
| 28 |
UINT FaceStart; |
|---|
| 29 |
UINT FaceCount; |
|---|
| 30 |
UINT VertexStart; |
|---|
| 31 |
UINT VertexCount; |
|---|
| 32 |
} |
|---|
| 33 |
|
|---|
| 34 |
enum D3DX10_MESH_DISCARD_FLAGS { |
|---|
| 35 |
D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER = 0x01, |
|---|
| 36 |
D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE = 0x02, |
|---|
| 37 |
D3DX10_MESH_DISCARD_POINTREPS = 0x04, |
|---|
| 38 |
D3DX10_MESH_DISCARD_ADJACENCY = 0x08, |
|---|
| 39 |
D3DX10_MESH_DISCARD_DEVICE_BUFFERS = 0x10 |
|---|
| 40 |
} |
|---|
| 41 |
|
|---|
| 42 |
struct D3DX10_WELD_EPSILONS { |
|---|
| 43 |
FLOAT Position; |
|---|
| 44 |
FLOAT BlendWeights; |
|---|
| 45 |
FLOAT Normal; |
|---|
| 46 |
FLOAT PSize; |
|---|
| 47 |
FLOAT Specular; |
|---|
| 48 |
FLOAT Diffuse; |
|---|
| 49 |
FLOAT[8] Texcoord; |
|---|
| 50 |
FLOAT Tangent; |
|---|
| 51 |
FLOAT Binormal; |
|---|
| 52 |
FLOAT TessFactor; |
|---|
| 53 |
} |
|---|
| 54 |
|
|---|
| 55 |
struct D3DX10_INTERSECT_INFO { |
|---|
| 56 |
UINT FaceIndex; |
|---|
| 57 |
FLOAT U; |
|---|
| 58 |
FLOAT V; |
|---|
| 59 |
FLOAT Dist; |
|---|
| 60 |
} |
|---|
| 61 |
|
|---|
| 62 |
interface ID3DX10MeshBuffer : IUnknown { |
|---|
| 63 |
extern(Windows) : |
|---|
| 64 |
HRESULT Map(void** ppData, SIZE_T* pSize); |
|---|
| 65 |
HRESULT Unmap(); |
|---|
| 66 |
SIZE_T GetSize(); |
|---|
| 67 |
} |
|---|
| 68 |
|
|---|
| 69 |
interface ID3DX10Mesh : IUnknown { |
|---|
| 70 |
extern(Windows) : |
|---|
| 71 |
UINT GetFaceCount(); |
|---|
| 72 |
UINT GetVertexCount(); |
|---|
| 73 |
UINT GetVertexBufferCount(); |
|---|
| 74 |
UINT GetFlags(); |
|---|
| 75 |
HRESULT GetVertexDescription(D3D10_INPUT_ELEMENT_DESC** ppDesc, UINT* pDeclCount); |
|---|
| 76 |
HRESULT SetVertexData(UINT iBuffer, void* pData); |
|---|
| 77 |
HRESULT GetVertexBuffer(UINT iBuffer, ID3DX10MeshBuffer** ppVertexBuffer); |
|---|
| 78 |
HRESULT SetIndexData(void* pData, UINT cIndices); |
|---|
| 79 |
HRESULT GetIndexBuffer(ID3DX10MeshBuffer** ppIndexBuffer); |
|---|
| 80 |
HRESULT SetAttributeData(UINT* pData); |
|---|
| 81 |
HRESULT GetAttributeBuffer(ID3DX10MeshBuffer** ppAttributeBuffer); |
|---|
| 82 |
HRESULT SetAttributeTable(D3DX10_ATTRIBUTE_RANGE* pAttribTable, UINT cAttribTableSize); |
|---|
| 83 |
HRESULT GetAttributeTable(D3DX10_ATTRIBUTE_RANGE* pAttribTable, UINT* pAttribTableSize); |
|---|
| 84 |
HRESULT GenerateAdjacencyAndPointReps(FLOAT Epsilon); |
|---|
| 85 |
HRESULT GenerateGSAdjacency(); |
|---|
| 86 |
HRESULT SetAdjacencyData(UINT* pAdjacency); |
|---|
| 87 |
HRESULT GetAdjacencyBuffer(ID3DX10MeshBuffer** ppAdjacency); |
|---|
| 88 |
HRESULT SetPointRepData(UINT* pPointReps); |
|---|
| 89 |
HRESULT GetPointRepBuffer(ID3DX10MeshBuffer** ppPointReps); |
|---|
| 90 |
HRESULT Discard(D3DX10_MESH_DISCARD_FLAGS dwDiscard); |
|---|
| 91 |
HRESULT CloneMesh(UINT Flags, LPCSTR pPosSemantic, D3D10_INPUT_ELEMENT_DESC* pDesc, UINT DeclCount, ID3DX10Mesh** ppCloneMesh); |
|---|
| 92 |
HRESULT Optimize(UINT Flags, UINT * pFaceRemap, ID3D10Blob* ppVertexRemap); |
|---|
| 93 |
HRESULT GenerateAttributeBufferFromTable(); |
|---|
| 94 |
HRESULT Intersect(D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir, UINT* pHitCount, UINT* pFaceIndex, float* pU, float* pV, float* pDist, ID3D10Blob* ppAllHits); |
|---|
| 95 |
HRESULT IntersectSubset(UINT AttribId, D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir, UINT* pHitCount, UINT* pFaceIndex, float* pU, float* pV, float* pDist, ID3D10Blob* ppAllHits); |
|---|
| 96 |
HRESULT CommitToDevice(); |
|---|
| 97 |
HRESULT DrawSubset(UINT AttribId); |
|---|
| 98 |
HRESULT DrawSubsetInstanced(UINT AttribId, UINT InstanceCount, UINT StartInstanceLocation); |
|---|
| 99 |
HRESULT GetDeviceVertexBuffer(UINT iBuffer, ID3D10Buffer** ppVertexBuffer); |
|---|
| 100 |
HRESULT GetDeviceIndexBuffer(ID3D10Buffer** ppIndexBuffer); |
|---|
| 101 |
} |
|---|
| 102 |
|
|---|
| 103 |
HRESULT D3DX10CreateMesh(ID3D10Device* pDevice, D3D10_INPUT_ELEMENT_DESC* pDeclaration, UINT DeclCount, LPCSTR pPositionSemantic, UINT VertexCount, UINT FaceCount, UINT Options, ID3DX10Mesh** ppMesh); |
|---|
| 104 |
|
|---|
| 105 |
enum D3DX10_MESHOPT { |
|---|
| 106 |
D3DX10_MESHOPT_COMPACT = 0x01000000, |
|---|
| 107 |
D3DX10_MESHOPT_ATTR_SORT = 0x02000000, |
|---|
| 108 |
D3DX10_MESHOPT_VERTEX_CACHE = 0x04000000, |
|---|
| 109 |
D3DX10_MESHOPT_STRIP_REORDER = 0x08000000, |
|---|
| 110 |
D3DX10_MESHOPT_IGNORE_VERTS = 0x10000000, |
|---|
| 111 |
D3DX10_MESHOPT_DO_NOT_SPLIT = 0x20000000, |
|---|
| 112 |
D3DX10_MESHOPT_DEVICE_INDEPENDENT = 0x00400000 |
|---|
| 113 |
} |
|---|
| 114 |
|
|---|
| 115 |
extern(C) const GUID IID_ID3DX10SkinInfo = {0x420bd604, 0x1c76, 0x4a34, [0xa4, 0x66, 0xe4, 0x5d, 0x6, 0x58, 0xa3, 0x2c]}; |
|---|
| 116 |
|
|---|
| 117 |
const D3DX10_SKININFO_NO_SCALING = 0; |
|---|
| 118 |
const D3DX10_SKININFO_SCALE_TO_1 = 1; |
|---|
| 119 |
const D3DX10_SKININFO_SCALE_TO_TOTAL = 2; |
|---|
| 120 |
|
|---|
| 121 |
struct D3DX10_SKINNING_CHANNEL { |
|---|
| 122 |
UINT SrcOffset; |
|---|
| 123 |
UINT DestOffset; |
|---|
| 124 |
BOOL IsNormal; |
|---|
| 125 |
} |
|---|
| 126 |
|
|---|
| 127 |
interface ID3DX10SkinInfo : IUnknown { |
|---|
| 128 |
extern(Windows) : |
|---|
| 129 |
HRESULT QueryInterface(REFIID iid, LPVOID* ppv); |
|---|
| 130 |
ULONG AddRef(); |
|---|
| 131 |
ULONG Release(); |
|---|
| 132 |
UINT GetNumVertices(); |
|---|
| 133 |
UINT GetNumBones(); |
|---|
| 134 |
UINT GetMaxBoneInfluences(); |
|---|
| 135 |
HRESULT AddVertices(UINT Count); |
|---|
| 136 |
HRESULT RemapVertices(UINT NewVertexCount, UINT* pVertexRemap); |
|---|
| 137 |
HRESULT AddBones(UINT Count); |
|---|
| 138 |
HRESULT RemoveBone(UINT Index); |
|---|
| 139 |
HRESULT RemapBones(UINT NewBoneCount, UINT* pBoneRemap); |
|---|
| 140 |
HRESULT AddBoneInfluences(UINT BoneIndex, UINT InfluenceCount, UINT* pIndices, float* pWeights); |
|---|
| 141 |
HRESULT ClearBoneInfluences(UINT BoneIndex); |
|---|
| 142 |
UINT GetBoneInfluenceCount(UINT BoneIndex); |
|---|
| 143 |
HRESULT GetBoneInfluences(UINT BoneIndex, UINT Offset, UINT Count, UINT* pDestIndices, float* pDestWeights); |
|---|
| 144 |
HRESULT FindBoneInfluenceIndex(UINT BoneIndex, UINT VertexIndex, UINT* pInfluenceIndex); |
|---|
| 145 |
HRESULT SetBoneInfluence(UINT BoneIndex, UINT InfluenceIndex, float Weight); |
|---|
| 146 |
HRESULT GetBoneInfluence(UINT BoneIndex, UINT InfluenceIndex, float* pWeight); |
|---|
| 147 |
HRESULT Compact(UINT MaxPerVertexInfluences, UINT ScaleMode, float MinWeight); |
|---|
| 148 |
HRESULT DoSoftwareSkinning(UINT StartVertex, UINT VertexCount, void* pSrcVertices, UINT SrcStride, void* pDestVertices, UINT DestStride, D3DXMATRIX* pBoneMatrices, D3DXMATRIX* pInverseTransposeBoneMatrices, D3DX10_SKINNING_CHANNEL* pChannelDescs, UINT NumChannels); |
|---|
| 149 |
} |
|---|
| 150 |
|
|---|
| 151 |
HRESULT D3DX10CreateSkinInfo(ID3DX10SkinInfo* ppSkinInfo); |
|---|
| 152 |
|
|---|
| 153 |
struct D3DX10_ATTRIBUTE_WEIGHTS { |
|---|
| 154 |
FLOAT Position; |
|---|
| 155 |
FLOAT Boundary; |
|---|
| 156 |
FLOAT Normal; |
|---|
| 157 |
FLOAT Diffuse; |
|---|
| 158 |
FLOAT Specular; |
|---|
| 159 |
FLOAT[8] Texcoord; |
|---|
| 160 |
FLOAT Tangent; |
|---|
| 161 |
FLOAT Binormal; |
|---|
| 162 |
} |
|---|