Как реализовать тройной буфер

Я пытаюсь реализовать тройную буферизацию, описанную здесь 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.

Я что-то упускаю или неправильно понимаю, как должен работать тройной буфер?

Также есть ли способ узнать, когда glDrawArrays останавливается из-за glBufferSubData еще не завершена?

0 ответов

Другие вопросы по тегам