我为opengl做了一个obj-loader。因此,我读取所有面(逐个)并在(openGL-)缓冲区(GL_ARRAY_BUFFER)中写入有序顶点,法线和uv-coords。这意味着我根据obj文件中的faces-section说明了所有必要的顶点,法线和uv-coords。然后我用glDrawArrays()
绘制它们......一切都很好。
为了节省一些内存,我想使用索引列表,并使用glDrawElements(),但我有一个问题。请参阅以下两张图片:
考虑顶点P0和三角形以及它在OBJ文件的面部分中的内容
三角
T1 --> f vertex(0)/P0/normal(0) vertex(1)/P1/normal(1) vertex(2)/P2/normal(2)
T2 --> f vertex(0)/P0/normal(0) vertex(1)/P1/normal(1) vertex(5)/P5/normal(5)
T3 --> f vertex(0)/P0/normal(0) vertex(2)/P2/normal(2) vertex(3)/P3/normal(3)
......一切都很好,但是
T4 --> f vertex(0)/P'0/normal(0) vertex(3)/P3/normal(3) vertex(4)/P4/normal(4)
T5 --> f vertex(0)/P'0/normal(0) vertex(4)/P4/normal(4) vertex(5)/P5/normal(5)
确定问题是什么?
vertex(0)/P0/normal(0) != vertex(0)/P'0/normal(0)
我认为的解决方案是:
现在我的问题......
是否有更好的方法来处理obj文件的face-section中相同顶点的不同uv-coords的问题?