我正在尝试为我的DirectX网格制作一个普通的贴图着色器,并且在关注我学校的一些笔记时,它告诉我需要我的顶点结构包含Pos的Vec3和正常的3x3 Martix, binormal和tangent,但我无法弄清楚如何获得binormal和tangent。我引用了我的书,它告诉我使用D3DXComputeTangentFrameEx函数,但我的所有网格都是D3DXFRAME对象,而不是ID3DXMesh * ..
任何人都可以帮助我吗?
我还想补充一点,我已经有了pos和普通的载体。
答案 0 :(得分:0)
如果您查看D3DXFRAME,就可以找到pMeshContainer
成员,D3DXMESHCONTAINER*类型,MeshData
成员D3DXMESHDATA类型的成员pMesh
类型的ID3DXMesh*
成员,但仅在Type == D3DXMESHTYPE_MESH
时有效。
示例:
{
D3DXFRAME Frame;
ID3DXMesh* pMesh;
if( Frame.pMeshContainer->MeshData.Type == D3DXMESHTYPE_MESH )
pMesh = Frame.pMeshContainer->MeshData.pMesh;
else
pMesh = 0; // model is ID3DXPatchMesh type
}