带法线贴图的Binormal和Tangent
Binormal and Tangent with Normal Mapping
我正在尝试为我的DirectX网格制作一个法线贴图着色器,在遵循学校的一些笔记时,它告诉我需要我的顶点结构包含用于Pos的Vec3和用于法线、binormal和切线的3x3 Martix,但我不知道如何获得binormal与切线。我参考了我的书,书中告诉我使用D3DXComputeTangentFrameEx函数,但我所有的网格都是D3DXFRAME对象,而不是ID3DXMesh*。。
有人能帮我吗?
我还想补充一点,我已经有了pos和法向量。
如果你查看D3DXFRAME,你可以找到pMeshContainer
成员,它是D3DXMESHCONTAINER*类型,它有D3DXMESHDATA类型的MeshData
成员,它有ID3DXMesh*
类型的pMesh
成员,但它只有在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
}