我有一个包含顶点列表的数组,我使用顶点缓冲区对象将其复制到 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 的索引参数传统上被解释为指向客户端内存的指针,而被解释为内部的偏移量以基本机器单位测量的缓冲对象。”
我对图形编程很陌生,所以如果其中任何一个没有意义,我深表歉意。