I'm trying to implement the triple buffering described here. The intent 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() and then immediately calling
Am I missing something or misunderstand how triple buffer should work?
Also is there a way to know when
glDrawArrays() stalls due to
glBufferSubData() still not being finished?