当WebGL决定更新显示器?

tit*_*ito 8 javascript webgl

在经典的OpenGL应用程序中,在我们完成渲染帧之后,我们通常调用非gl方法将窗口缓冲区"翻转"到当前帧.

但我在WebGL中没有看到任何相关内容.它是如何工作的?

Tom*_*mmy 13

WebGL总是被缓冲,当您退回到事件循环时,浏览器会将后台缓冲区的当前内容推送到前台缓冲区.

因此,您可以根据需要执行任意数量的绘制命令,而不必担心向用户显示部分结果.当您退出事件循环时,WebGL将显示您的更改并清除然后返回缓冲区.

如果你想要,你也可以表现得好像你有一个缓冲区,当适当的动作通过传递preserveDrawingBuffer提示它们时执行部分更新:在创建WebGL上下文时为true,如

gl = somecanvas.getContext("webgl", {preserveDrawingBuffer: true});
Run Code Online (Sandbox Code Playgroud)

这是两个例子,一个没有preserveDrawingBuffer,一个有