WebGL всегда обратно буферизируется, и браузер помещает текущее содержимое обратного буфера в передний буфер каждый раз, когда вы выходите обратно в цикл обработки событий.
Таким образом, вы можете выполнять столько команд рисования, сколько хотитене боясь показывать частичные результаты пользователю.Когда вы выходите из цикла обработки событий, WebGL представит ваши изменения и очистит их, а затем создаст резервный буфер.
Если вы хотите, вы также можете действовать так, как если бы у вас был один буфер, выполняя частичные обновления, когда соответствующие действия запрашивают их, передавая preserveDrawingBuffer.: true при создании контекста WebGL, как в
gl = somecanvas.getContext("webgl", {preserveDrawingBuffer: true});
Вот 2 примера: один без preserveDrawingBuffer и один с