由于 OpenGL 绘图调用受最近绑定的 VBO 的影响,如果您还想绘制现场动态创建的不在 VBO 中的顶点,如何取消绑定 VBO?
我看过的所有示例都没有显示如何禁用 VBO 缓冲区,就像使用属性数组指针一样。也许这不是特别常见,因为大多数应用程序要么将所有内容都包含在 VBO 中,要么什么都没有,也许混合这两种场景并不常见。
由于 OpenGL 绘图调用受最近绑定的 VBO 的影响,如果您还想绘制现场动态创建的不在 VBO 中的顶点,如何取消绑定 VBO?
我看过的所有示例都没有显示如何禁用 VBO 缓冲区,就像使用属性数组指针一样。也许这不是特别常见,因为大多数应用程序要么将所有内容都包含在 VBO 中,要么什么都没有,也许混合这两种场景并不常见。
还要记住在混合 VBO 和非 VBO 时禁用属性指针。你打电话时:
GLES20.glEnableVertexAttribArray(positionHandle);
后面应该跟一个:
GLES20.glDisableVertexAttribArray(positionHandle);
完成绘图后,您可以使用其他绘图方法(VBO 或非 VBO)重新启用它。
要取消绑定 VBO,只需将glBindBuffer
第二个参数设置为 0 即可。
零值是保留的,但每个缓冲区对象目标没有默认缓冲区对象。相反,缓冲区设置为零有效地取消绑定以前绑定的任何缓冲区对象,并恢复该缓冲区对象目标的客户端内存使用。
然后你必须绑定另一个 VBO 或从客户端内存中提取。