纹理坐标与顶点坐标不是一一对应的,但是我能经常听见“顶点的纹理坐标”这个说法,严格来说是不准确的。下面用一个图来解释(这里考虑三角网格的情况,其余情况类似):
vertex1 — vertex_index_1/texcoord_index_1 — texcoord1
vertex2 — vertex_index_2—Triangle — texcoord_index_2 — texcoord2
vertex3 — vertex_index_3/texcoord_index_3 — texcoord3
可以看出顶点坐标与纹理坐标其实没有直接联系,他们是用过三角面片间接联系起来的。它们之间没有一一对应的关系,那么“顶点的纹理坐标”这种说法是怎么来的呢?我猜测它来源于圆盘拓扑结构的网格的参数化的结果,因为圆盘拓扑结构的网格可以和它的参数域一一对应,自然这种情况下顶点坐标与纹理坐标也一一对应了,但是在非圆盘结构下的网格,比如球,它与平面参数域没有一一对应的关系,要把网格参数化到平面上,就得割开网格,这样网格在割缝处实际上就产生了新的顶点,但顶点坐标共享。所以一般的情况是在割缝处纹理坐标和顶点坐标是一对多的关系。
今天我在用顶点数组绘制的时候就出现————了问题,顶点数组里面顶点坐标与纹理坐标是一一对应的,那么怎么处理呢?我能想到的一个比较直观的方法就是添加割缝处新的顶点,这样顶点坐标与纹理坐标就一一对应了,因为割缝处是很小一部分,添加的顶点也不会多。至于是否有其他更加好的方法,我暂时没有想到,也希望知道的人告诉我一下。