高CPU使用率运行基于webassembly的WebGL程序

高CPU使用率运行基于webassembly的WebGL程序,webgl,webassembly,emscripten,Webgl,Webassembly,Emscripten,我正在使用webassembly(C++和emscripten)制作一个游戏,我正在使用OpenGL生成图形。我注意到我的游戏经常使用大量的CPU,通常是200-300%。如果我有一个更大的3D模型,或者如果我的着色器更复杂,CPU的使用率会更高 这对webassembly正常吗?还是我做错了什么?我有点担心我犯了一个错误,因为通常情况下,我不希望CPU使用量与3D模型的大小直接相关(我希望这会对图形卡产生影响),但由于是webassembly,可能会有所不同 在运行OpenGL和webasse

我正在使用webassembly(C++和emscripten)制作一个游戏,我正在使用OpenGL生成图形。我注意到我的游戏经常使用大量的CPU,通常是200-300%。如果我有一个更大的3D模型,或者如果我的着色器更复杂,CPU的使用率会更高

这对webassembly正常吗?还是我做错了什么?我有点担心我犯了一个错误,因为通常情况下,我不希望CPU使用量与3D模型的大小直接相关(我希望这会对图形卡产生影响),但由于是webassembly,可能会有所不同

在运行OpenGL和webassembly时,有没有什么好的技巧可以减少CPU的使用

编辑: 我开始工作的基本例子是 现场演示在此()
这已经在相当高的CPU下运行。这个例子让它在如此高的CPU负载下运行有什么问题?使CPU保持高性能的不是glBufferData,甚至不是删除。

您的浏览器可能出于某种原因使用软件渲染,请检查浏览器的GPU调试页面,查看是否有任何错误,在Chrome即
chrome://gpu
,在Firefox中,GPU部分位于
关于:支持

也许您的浏览器使用了软件渲染回退?没有代码就不可能告诉您做错了什么,但是。如果它的性能不是很差,那么问题在于你的代码。如果您使用的是已有20年历史的固定函数opengl(glVertex),那么这将是性能不佳的原因。不,我不使用旧的opengl函数渲染。您链接的示例执行得很好,但如果我的顶点数较低,我的应用程序也会执行得很好。我从这个例子开始开发:另外,如果我直接拿这个例子,将顶点数增加到10000+,我的CPU也会增加,所以看起来这不是因为我做了任何更改“也许你的浏览器使用了软件渲染回退?”有没有可能以某种方式检查这一点?是的,所以我注意到这个简单的例子在这里也有一个现场演示:它已经在50%的CPU下运行,所以这个例子可能有内在的错误?我编辑了这篇文章以添加更多细节