ここで説明されているトリプル バッファリングを実装しようとしています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 がいつ停止するかを知る方法はありますか?