我需要帮助才能看到他们之间的权衡。
glDrawElements()
需要获取索引数据" live"作为参数。没有办法结合优势吗?我们也可以缓冲索引数据吗?
在顶点着色器中看起来怎么样?它可以使用索引并在顶点位置数组中查找吗?
答案 0 :(得分:5)
这些信息确实有点难以找到,但也可以将glDrawElements
与VAO结合使用。然后,索引数据可以(但不必)由ELEMENT_ARRAY_BUFFER
提供。索引像往常一样工作,在顶点着色器中不需要做任何特殊操作。 OpenGL确保已经在原始组装期间以正确的方式使用索引。
spec在第10.3.10节中说明了这一点:
DrawElements,DrawRangeElements和DrawElementsInstanced源 来自缓冲区对象的索引,其名称绑定到ELEMENT_- ARRAY_BUFFER,使用其索引参数作为缓冲区对象的偏移量
这基本上意味着,每当绑定ELEMENT_ARRAY_BUFFER
时,indices参数将用作此缓冲区的偏移量(0表示从头开始)。当没有绑定这样的缓冲区时,索引指针指定索引数组的地址。