为什么 3D 模型具有具有不同 uv 坐标的重复顶点位置

Why do 3D models have duplicate vertex positions with different uv coords

我正在尝试从 Blender 导出 Collada 格式,并使用更复杂的对象和纹理,我在索引 "p" 部分注意到,它会列出相同的顶点信息,但使用不同的法线和紫外线坐标。

我觉得很重要的两个主要问题。

1:为什么?它不应该只有 1 个顶点位置和 1 个 UV 坐标吗?

2(最重要的问题):如果这个顶点信息被无序地放入顶点着色器会发生什么?例如,索引 1 顶点和索引 10 顶点共享相同的位置,但具有不同的法线和 UV 坐标。如果索引 10 先行,然后是索引 1 怎么办?反之亦然,这会改变像素着色器内部的任何内容吗?这对管道的其余部分有何影响?

谢谢!

顶点由定义它的所有信息的组合来定义。所以你的顶点是五维的:(x,y,z,u,v)。对于任意两个顶点,如果 u1 != u2 或 v1 != v2 它们不是同一个顶点。固定流水线 GPU 不支持额外的间接级别,如果您想说 "vertex is position A plus texture position B plus normal C plus ...",那么在可编程 GPU 中添加该级别的间接级别仍然不是标准的,因为这通常意味着在比它节省的内存带宽。你可以,但人们通常不会。

顶点着色器不知道它正在处理的顶点在排序中的位置;只要几何管道保持跟踪,就不会出现问题。