Когда WebGL решит обновить дисплей? - PullRequest
8 голосов
/ 29 февраля 2012

В классическом приложении OpenGL после завершения рендеринга фрейма мы обычно вызываем не-gl метод, чтобы «перевернуть» буфер окна в наш текущий фрейм.

Но я ничего не вижуоб этом в WebGL.Как это работает?

1 Ответ

13 голосов
/ 29 февраля 2012

WebGL всегда обратно буферизируется, и браузер помещает текущее содержимое обратного буфера в передний буфер каждый раз, когда вы выходите обратно в цикл обработки событий.

Таким образом, вы можете выполнять столько команд рисования, сколько хотитене боясь показывать частичные результаты пользователю.Когда вы выходите из цикла обработки событий, WebGL представит ваши изменения и очистит их, а затем создаст резервный буфер.

Если вы хотите, вы также можете действовать так, как если бы у вас был один буфер, выполняя частичные обновления, когда соответствующие действия запрашивают их, передавая preserveDrawingBuffer.: true при создании контекста WebGL, как в

gl = somecanvas.getContext("webgl", {preserveDrawingBuffer: true});

Вот 2 примера: один без preserveDrawingBuffer и один с

...