我试图让纹理在我的 OBJMesh 加载器上工作。到目前为止,我已经看过一些关于如何做到这一点的在线教程,最明显的例子是我理解的立方体/盒子示例。但是我遇到了一个顶点可能使用/具有多个纹理坐标的问题。
例如:
f 711/1/1 712/2/2 709/3/3
f 711/9/1 704/10/9 712/11/2
如您所见,索引顶点编号 711 使用纹理坐标编号 1 和 9,索引顶点编号 712 使用纹理坐标编号 2 和 11。所以我的问题是如何让它与多个纹理坐标一起使用?是否有某种缓冲区可以使用,例如顶点缓冲区和索引缓冲区?
我为此使用索引,并且我有以下顶点声明:
D3DVERTEXELEMENT9 vertexElement[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
D3DDECL_END()};
device->CreateVertexDeclaration(vertexElement, &vertexDec);
我的这是我的顶点结构:
struct VERTEX{
D3DXVECTOR3 position;
D3DXVECTOR2 uv;
D3DCOLOR color;
};
不太确定这里要显示什么其他代码,但是如果我遗漏了一些东西或者你们需要看到一些可以帮助我的东西,请告诉我。
谢谢
编辑:如果我使用 FVF 而不是顶点声明会更好吗?