我正在尝试为DirectX网格制作法线贴图着色器,并遵循学校的一些说明,它告诉我,我的顶点结构必须包含Pos的Vec3和法线,双法线和3x3 Martix。切线,但我不知道如何得到双法线和切线。我引用了我的书,该书告诉我使用D3DXComputeTangentFrameEx函数,但是我所有的网格都是D3DXFRAME对象,而不是ID3DXMesh *。
谁能帮我吗?
我还想补充一点,我已经有了pos和法线 vector 。
最佳答案
如果查看D3DXFRAME,则可以找到pMeshContainer
类型的MeshData
成员,其中D3DXMESHCONTAINER*类型的pMesh
成员,而ID3DXMesh*
类型的Type == D3DXMESHTYPE_MESH
成员,但是仅当ojit_code时有效。
例:
{
D3DXFRAME Frame;
ID3DXMesh* pMesh;
if( Frame.pMeshContainer->MeshData.Type == D3DXMESHTYPE_MESH )
pMesh = Frame.pMeshContainer->MeshData.pMesh;
else
pMesh = 0; // model is ID3DXPatchMesh type
}