如何实现三重缓冲

时间:2013-06-17 14:41:37

标签: buffering doublebuffered

我正在尝试实现此处描述的三重缓冲http://developer.apple.com/library/ios/#documentation/3ddrawing/conceptual/opengles_programmingguide/OpenGLESApplicationDesign/OpenGLESApplicationDesign.html。打算通过避免等待glBufferSubData完成来获得更高的帧速率。

我的理解是这是如何实现三重缓冲:

- make 3 buffers with glGenBuffers()
Current frame:
  - bind to buffer3
  - draw last frame
  - bind to buffer1
  - glBufferSubData for all the vertices, 
      keep track of their texture/vertex count,blend function, etc
Next frame:
  - bind to buffer 1
  - draw last frame (bind texture, blend func, glDrawArrays)
  - and so on

在执行glBufferSubData之后似乎没有任何性能提升,然后立即调用glDrawArrays。

我是否遗漏了某些内容或误解了三重缓冲区应该如何工作?

还有一种方法可以知道由于glBufferSubData还没有完成,glDrawArrays何时停止?

0 个答案:

没有答案