2

我正在尝试为我的 DirectX 网格制作法线贴图着色器,并且在遵循我学校的一些笔记时,它告诉我我的顶点结构需要包含用于 Pos 的 Vec3 和用于法线、副法线和切线,但我不知道如何获得副法线和切线。我参考了我的书,它告诉我使用 D3DXComputeTangentFrameEx 函数,但是我所有的网格都是 D3DXFRAME 对象,而不是 ID3DXMesh*..

谁能帮我吗?

我还想补充一点,我已经有了 pos 和法线向量。

4

1 回答 1

0

如果你看D3DXFRAME,你会发现pMeshContainer成员,它是D3DXMESHCONTAINER*类型,它有D3DXMESHDATA类型的MeshData成员,它有类型的成员,但它只有在.pMeshID3DXMesh*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
}
于 2012-08-29T08:46:20.023 回答