如上图所示,一个顶点需要映射到两个不同的uv坐标。我知道我可以通过将另一个缓冲区绑定(bind)到 GL_ELEMENT_ARRAY_BUFFER 来索引 verities,但这会将 uv 绑定(bind)到同一索引中。我找不到任何显示如何索引 uv 的文档或文章。我认为有一种方法可以做到这一点,因为它似乎对人们有用。我该怎么做?
最佳答案
简单地说,没有办法来索引顶点的单个属性。元素/索引缓冲区的使用适用于共享属性的排列,例如位置,紫外线。由于其中一个属性无法共享,因此其他属性也不能共享。该问题的一个简单解决方案是复制所需的信息来构造新的排列(具有不同的 uv 坐标)。
实际上,您需要支持的是多个元素/索引缓冲区,每个属性一个:用于普通属性的元素/索引缓冲区,用于 uv 属性的元素/索引缓冲区,用于位置属性的元素/索引缓冲区。但在当前几代 OpenGL(3 或 4)或 DirectX (11)(可能在硬件级别本身)中,这种情况根本不存在。
关于opengl中的Java vbo,索引纹理坐标,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22849042/