使用glDrawElements(iOS)重用相同的缓冲区

时间:2013-03-07 05:57:40

标签: ios opengl-es vbo

是否可以创建 VBO 并在同一渲染周期中对glDrawElements的调用之间重复使用? (我尝试并获得了奇怪的结果)。以下示例缺少绑定等。

初始代码(仅执行一次) * *

glGenBuffers(...)

glBufferData(...)

渲染帧代码(为每个帧执行):

glMapBufferOES(...)
//... Update buffer from index 0 to X
glDrawElements(...)
//... Update buffer from index 0 to Y
glDrawElements(...)
[context presentRenderbuffer:GL_RENDERBUFFER_OES];

1 个答案:

答案 0 :(得分:0)

在绘制缓冲区之前,您需要取消映射缓冲区。如果你没有取消映射,这可能就是你在glDrawElements看到奇怪结果的原因。

http://www.opengl.org/sdk/docs/man/xhtml/glMapBuffer.xml

调用glDrawElements后,您可以重新映射缓冲区并重新填充。

通过不立即重用缓冲区,您可能会获得更好的性能。在平局后重新映射可能会阻止,直到平局完成。