纹理坐标在 Direct3D11 游戏引擎中无法正确映射

Texture coordinates do not map correctly in Direct3D11 game engine

如果这个问题已经在其他地方得到回答或者这是错误的站点,请原谅,但我在使用 Direct3D 11 渲染纹理时遇到了严重的问题。

使用 Cinema 4D R17,我创建了一个简单的球体,对所有多边形进行了三角剖分,然后我对纹理进行了 UV 映射,如您在此处所见:并且渲染正确。

接下来,我将文件导出为 .x,因为我创建了一个更简单的网格格式,而 .x 是获取顶点、索引、法线、纹理坐标等的理想选择。这种转换非常完美,因为所有数据都来自源文件已成功传输到我的文件(我检查并仔细检查了它)。

但是,当我在我的游戏引擎中上传文件时,我得到以下结果: 行星的所有侧面都被正确渲染,除了在纹理的末端,那里形成了奇怪的图案。看起来好像整个纹理再次映射到那小块三角形上。

这不是我第一次得到这样的东西。我对立方体纹理立方体也有类似的问题:

当它应该看起来像这样时:

这是立方体的顶点数据:

8 // Number of vertices.
-0.01 -0.01 -0.01 -0.01 0.01 -0.01 0.01 -0.01 -0.01 0.01 0.01 -0.01 0.01 -0.01 0.01 0.01 0.01 0.01 -0.01 -0.01 0.01 -0.01 0.01 0.01 // Vertices stored in X, Y, Z.
1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 1  // Texture coordinates.
36 // Indices count.
0 1 3 2 3 5 4 5 7 6 7 1 1 7 5 6 0 2 0 3 2 2 5 4 4 7 6 6 1 0 1 5 3 6 2 4 // Indices. 
tex_1.bmp // Texture file name

我读到不同面之间共享的顶点纹理坐标之间可能存在冲突,解决此问题意味着不使用索引缓冲区。

我不确定这里有什么问题。有人可以帮助我吗?谢谢。

我终于明白了! Cinema 4D 导出器坏了,我不知道为什么。我切换到 .obj 并使用 Microsoft 提供的解析器,但它仍然无法正常工作。然后,我切换到 Blender,添加纹理,对面进行三角剖分并导出它,它按预期工作。