preserveDrawingBuffer false - 值得努力吗?

Raz*_*a O 11 javascript performance webgl

在我们的上下文中使用preserveDrawingBuffer时,我们需要自己清理绘图缓冲区.我在我的应用程序中使用此技术.

我读了一些文章说 - 将此标志设置为false可以获得更好的性能.

在我的应用程序设置为false时,在某些情况下我需要自己清理前缓冲区,因为当没有绘图时我们仍然可以看到之前绘制的内容.

我的问题是,现在值得将我的应用颠倒过来并覆盖所有案例以获得更好的表现吗?它真的改善了吗?

当这个标志为真(并且执行gl.clear(..))与false相比时,是否有任何演示显示性能的不同?

gma*_*man 21

我知道这已在其他地方得到解答,但我找不到它......

preserveDrawingBuffer: false
Run Code Online (Sandbox Code Playgroud)

表示WebGL可以交换缓冲区而不是复制缓冲区.

WebGL画布有2个缓冲区.您正在绘制的那个和正在显示的那个.当绘制网页时,WebGL有2个选项

  1. 将绘图缓冲区复制到显示缓冲区.

    此操作显然较慢,因为复制数千或数百万像素不是自由操作

  2. 交换两个缓冲区.

    这个操作实际上是即时的,因为除了交换2个变量的内容之外什么都不需要.

无论是WebGL的互换或复印件要由浏览器和其他各种设置,但如果preserveDrawingBufferfalseWebGL的可以换,如果它true不能.

如果你想看到一个表演差异,我建议你在手机上试试你的应用程序.确保抗锯齿也关闭,因为抗锯齿需要一个有效复制操作的解决步骤.

  • 在完成所有案例的工作和覆盖之后,我设法用`preserveDrawingBuffer = false`发布了一些版本.我个人没有看到任何性能变化,但是,在我的客户使用他们糟糕的图形卡时,他们说有很好的性能提升.只是想分享它 (5认同)