【发布时间】:2017-05-20 04:05:33
【问题描述】:
(说到 OpenGL 3.3)有没有办法在同一个 VBO 中存储不同的顶点属性?我的意思不是与“步幅”交错,我的意思是例如 VBO 开头的位置和 VBO 结尾的纹理坐标。
如果是,那么索引也是如此吗?我可以将顶点索引和顶点属性存储在同一个 VBO 中并将其绑定到 DrawElements 类型的绘图调用吗? 谢谢!
【问题讨论】:
(说到 OpenGL 3.3)有没有办法在同一个 VBO 中存储不同的顶点属性?我的意思不是与“步幅”交错,我的意思是例如 VBO 开头的位置和 VBO 结尾的纹理坐标。
如果是,那么索引也是如此吗?我可以将顶点索引和顶点属性存储在同一个 VBO 中并将其绑定到 DrawElements 类型的绘图调用吗? 谢谢!
【问题讨论】:
是的,不需要交错数据。
gl命令的最后一个参数glVertexAttribPointer() "指定当前绑定到GL_ARRAY_BUFFER目标的缓冲区的数据存储中数组中第一个通用顶点属性的第一个分量的偏移量。初始值为 0。”
只需自行计算该偏移量并将其传递给命令即可。
我可以将顶点索引和顶点属性存储在同一个 VBO 中吗? 为 DrawElements 类型的绘图调用绑定它?
如果您使用不同的glVertexAttribPointer 或不同的glDrawxx,则没有问题。
如果顶点和索引具有不同的类型(浮点数和整数)和步幅,则不能同时读取它们。
【讨论】: