我正在尝试为我的 DirectX 网格制作法线贴图着色器,并且在遵循我学校的一些笔记时,它告诉我我的顶点结构需要包含用于 Pos 的 Vec3 和用于法线、副法线和切线,但我不知道如何获得副法线和切线。我参考了我的书,它告诉我使用 D3DXComputeTangentFrameEx 函数,但是我所有的网格都是 D3DXFRAME 对象,而不是 ID3DXMesh*..
谁能帮我吗?
我还想补充一点,我已经有了 pos 和法线向量。
如果你看D3DXFRAME,你会发现pMeshContainer
成员,它是D3DXMESHCONTAINER*类型,它有D3DXMESHDATA类型的MeshData
成员,它有类型的成员,但它只有在.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
}