Sign up ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I'm trying to implement the triple buffering described here The intend is to gain higher frame rate by avoiding waiting for glBufferSubData to finish.

My understanding is that this is how to implement triple buffer:

- 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

There doesn't seem to be any performance gain between this and doing glBufferSubData then immediately call glDrawArrays.

Am I missing something or misunderstand how triple buffer should work?

Also is there a way to know when glDrawArrays stall due to glBufferSubData still not finished?

share|improve this question
The driver will very probably multi-buffer behind the scenes for you if it can detect a consistent usage pattern. –  MFAH Jun 18 '13 at 16:48

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.