可以在同一个VBO中存储不同的顶点属性和索引吗?

时间:2017-05-19 19:54:12

标签: c++ opengl

(说到OpenGL 3.3)有没有办法在同一个VBO中存储不同的顶点属性?我并不意味着交错使用" stride",我的意思是例如在VBO开头的位置和VBO结束时的纹理坐标。

如果是,那么指数也是如此吗?我可以将顶点索引和顶点属性存储在同一个VBO中并将其绑定到DrawElements类型的绘制调用吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

是的,不需要交错数据。

gl-command的最后一个参数glVertexAttribPointer() “指定当前绑定到的缓冲区的数据存储中数组中第一个通用顶点属性的第一个组件的偏移量GL_ARRAY_BUFFER目标。初始值为0.“

只需自己计算偏移量并将其传递给命令。

  

我可以将顶点索引和顶点属性存储在同一个VBO和   将它绑定为DrawElements类型的绘制调用?

如果您使用不同的glVertexAttribPointer或不同的glDrawxx,则没有问题。
你不能做的是如果它们有不同的类型(浮点数与整数)和步幅,则同时读取顶点和索引。