具有法线贴图的Binormal和Tangent

时间:2012-08-29 08:23:03

标签: c++ directx

我正在尝试为我的DirectX网格制作一个普通的贴图着色器,并且在关注我学校的一些笔记时,它告诉我需要我的顶点结构包含Pos的Vec3和正常的3x3 Martix, binormal和tangent,但我无法弄清楚如何获得binormal和tangent。我引用了我的书,它告诉我使用D3DXComputeTangentFrameEx函数,但我的所有网格都是D3DXFRAME对象,而不是ID3DXMesh * ..

任何人都可以帮助我吗?

我还想补充一点,我已经有了pos和普通的载体。

1 个答案:

答案 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
}