在OpenGL ES 1.x中使用顶点缓冲区对象时,我可以使用索引基元吗?

时间:2008-11-06 09:18:28

标签: opengl-es vbo

我有一个数组,其中包含一个顶点列表,我使用顶点缓冲区对象将其复制到GPU。然而,顶点坐标本身是没有意义的,因为我还有一个整数数组,其中包含顶点数组的索引列表。

在这种情况下,可以创建另一个缓冲区对象来存储索引,然后在渲染函数中绑定顶点数组和索引数组以进行绘制:

//vertex coordinates
glBindBuffer(GL_ARRAY_BUFFER, bufferId1);         
//index coordinates
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferId2); 

glVertexPointer(3, GL_FLOAT, 0, 0);
//Not sure if this should be Unsigned BYTE or Unsigned SHORT
glDrawElements(GL_POINTS, 6, GL_UNSIGNED_BYTE, 0);  

我读过api,以下让我困惑:
“当一个非零缓冲区对象绑定到GL_ELEMENT_ARRAY_BUFFER目标时,glDrawElements的indices参数传统上被解释为指向客户端内存的指针,而是被解释为在基本机器中测量的缓冲区对象内的偏移量单位。”

我对图形编程很陌生,如果其中任何一个没有意义,请道歉。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。 The official tutorial应该帮助你。他们建议不要使用无符号字节,坚持使用16或32位索引来提高速度。