WebGL的CPU使用率高吗?

问题描述:

我借助一些演示和教程来检查Firefox和Chromium的夜间版本,并支持WebGL,我忍不住想知道它们造成的极高CPU负载。WebGL的CPU使用率高吗?

一个简单的演示like this one运行在我的双核心持续60%。大版本的this one使CPU达到100%并具有一些可见的帧丢失。
铬似乎比firefox稍好,但不是太多。我很确定,如果这些是桌面应用程序,CPU负载将可以忽略不计。

那么这里发生了什么?它在做什么?运行这些简单的脚本不能那么苛刻。它是额外的安全层还是其他?


编辑:我发现这是porded这里WebGL的原始演示: http://rrrola.wz.cz/files/puls_win.zip

运行这个(全屏)获取的CPU持续48%,所以也许我错了......

+0

我猜上下文切换仍然很昂贵。从JS到Native到GPU。 – 2010-06-05 16:00:41

+0

上下文切换到GPU?是吧?你的意思是CPU和GPU之间的同步吗? OpenGL将渲染指令转储到缓冲区中并将它们传输到GPU中,但GPU不应该太多,GPU会在渲染中的指定点处使用缓冲区交换将结果同步到屏幕上,但CPU不涉及在所有。 – 2010-06-05 16:05:52

+0

@Ben,但是在每次opengl调用时都会切换到内核上... – shoosh 2010-06-05 16:18:52

webgl的速度确实很慢。因为它是新的,它使用一个软件排序器。因此GPU - CPU - GPU基本上只需要一帧的调用。 firefox和webkit都在使用它

+2

我会继续介绍EWGL在这里说的。 WebGL规范要求渲染的3D画布可以与页面上的其他HTML元素合成(例如,以便文本可以出现在其上)。这意味着GPU呈现场景,然后CPU获取副本并将其与呈现的HTML结合起来,然后将其发送回显卡进行显示。所以,每一帧都有GPU-CPU-GPU;这很贵。浏览器编写者正在解决这个问题 - 将来的IIUC,GPU将执行合成。 – 2010-06-07 13:22:10

图形渲染是CPU密集型的,这就是为什么有显卡的GPU,所以工作可以卸载到他们。我会尝试你的演示,看看他们是如何在我的电脑上安装了体面的视频卡。

+0

这台电脑有一个nVidia 8600,它不仅能够处理这些。 – shoosh 2010-06-05 15:47:52

+0

确定不会再次这样做LOL。我可怜的显卡的GPU正在走向融化。所以,WebGL仍然是一项正在进行的工作,我们只需要说更多的优化。顺便说一句,我的CPU没有受到太多打击。我使用的是nVidia 7900GS,所以我想是时候升级了:( – Khorkrak 2010-06-05 16:03:17

无法重现性能问题。第一个运行在98-100fps下,使用我的Core i5的一个核心。第二个使用一个核心的约50%。

这是与Chrome开发通道,Windows 7 64位,Radeon HD 5770,换句话说一个适度强大的现代机器。

另请注意,当代码大量迭代时(并且这些演示看起来有很多多边形),小代码大小并不等于快速。

+0

难道你不觉得奇怪吗?它使用了一个完整的核心基本上完成了大部分的任务吗? – shoosh 2010-06-05 15:49:48