javascript - preserveDrawingBuffer false - 值得付出努力吗?

标签 javascript performance webgl

在上下文中使用 preserveDrawingBuffer 时,我们需要注意自行清除绘图缓冲区。我在我的应用中使用了这种技术。

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

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

我的问题是,为了获得更好的性能,现在是否值得将我的应用颠倒过来并涵盖所有情况?真的有那么大的进步吗?

是否有任何演示显示当此标志为 true(并执行 gl.clear(..))与 false 时性能不同?

最佳答案

我知道这已经在其他地方得到了回答,但我找不到所以....

preserveDrawingBuffer: false

意味着 WebGL 可以交换缓冲区而不是复制缓冲区。

WebGL Canvas 有 2 个缓冲区。您正在绘制的那个和正在显示的那个。当需要绘制网页时,WebGL 有 2 个选项

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

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

  2. 交换两个缓冲区。

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

WebGL 是否交换或复制取决于浏览器和各种其他设置,但如果 preserveDrawingBufferfalse WebGL 可以交换,如果它为 true它不能。

如果您想查看性能差异,我建议您在手机上试用您的应用。确保抗锯齿也已关闭,因为抗锯齿需要一个解析步骤,这是有效的复制操作。

关于javascript - preserveDrawingBuffer false - 值得付出努力吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27746091/

相关文章:

javascript - 诊断 href 值被定向到另一个值

performance - NoSQL 数据库性能测试

javascript - 是否有任何 native 方法可以对浏览器中公开的点的有序列表进行三 Angular 测量?

javascript - 如何在 WebGL 中实现阴影贴图?

javascript - WebGL 使用 gl-matrix 库 mat4.translate 未运行

javascript - 无法使用 RxJS 中的计时器完成比赛

javascript - 将查询参数与集合运算符一起使用

javascript - 嵌套 ES6 promise - 未捕获外部函数错误

java - 在 Java 中有效地计算两个集合的交集?

java - 为什么要编译 Java 正则表达式?