如何在有和没有VBO的情况下混合绘图

时间:2013-04-14 11:21:23

标签: opengl-es-2.0

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

我所看到的所有示例都没有显示如何禁用VBO缓冲区,就像属性数组指针一样。也许这并不是特别常见,因为大多数应用程序要么在VBO中拥有所有内容,要么没有任何东西,也许混合这两种情况并不常见。

2 个答案:

答案 0 :(得分:0)

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

  

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

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

答案 1 :(得分:0)

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

GLES20.glEnableVertexAttribArray(positionHandle);

接下来应该是:

GLES20.glDisableVertexAttribArray(positionHandle);

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