我正在使用webassembly (c++和emscripten)制作游戏,其中我使用OpenGL生成图像。我注意到我的游戏经常使用大量CPU,通常是200-300%。如果我有一个更大的3D模型,或者如果我的着色器更复杂,这个CPU使用率会更高。
这是正常的webassembly吗?还是我做错了什么?我有点担心我犯了一个错误,因为通常我不会期望CPU使用率直接与3D模型的大小相关联(我预计这主要是对显卡造成的影响),但由于它是webassembly,它可能会有所不同。
在运行OpenGL和webassembly时,有什么好的技巧可以减少CPU的使用吗?
编辑:我开始研究的基本例子是https://github.com/timhutton/opengl-canvas-wasm现场演示在这里(https://timhutton.github.io/opengl-canvas-wasm/)这已经在相当高的CPU上运行了。这个例子让它在如此高的CPU负载下运行有什么问题?不是glBufferData
,甚至不是移除,使CPU保持高。
你的浏览器可能出于某种原因使用软件渲染,检查你的浏览器的GPU调试页面,看看是否有什么问题,在Chrome中是chrome://gpu
,在Firefox中是about:support
的GPU部分。