0

由于 OpenGL 绘图调用受最近绑定的 VBO 的影响,如果您还想绘制现场动态创建的不在 VBO 中的顶点,如何取消绑定 VBO?

我看过的所有示例都没有显示如何禁用 VBO 缓冲区,就像使用属性数组指针一样。也许这不是特别常见,因为大多数应用程序要么将所有内容都包含在 VBO 中,要么什么都没有,也许混合这两种场景并不常见。

4

2 回答 2

0

还要记住在混合 VBO 和非 VBO 时禁用属性指针。你打电话时:

GLES20.glEnableVertexAttribArray(positionHandle);

后面应该跟一个:

GLES20.glDisableVertexAttribArray(positionHandle);

完成绘图后,您可以使用其他绘图方法(VBO 或非 VBO)重新启用它。

于 2014-03-04T15:55:12.820 回答
0

要取消绑定 VBO,只需将glBindBuffer第二个参数设置为 0 即可。

零值是保留的,但每个缓冲区对象目标没有默认缓冲区对象。相反,缓冲区设置为零有效地取消绑定以前绑定的任何缓冲区对象,并恢复该缓冲区对象目标的客户端内存使用。

然后你必须绑定另一个 VBO 或从客户端内存中提取。

于 2013-04-14T17:24:45.560 回答