我正在开发一个WebGL应用程序,而且我遇到了Retina Display Macbook Pros的一些非常严重的性能问题。我正在测试带有Intel Iris Pro GPU的15英寸Macbook,以全分辨率渲染,这使我的画布分辨率为3810x2030,带有全屏Chrome窗口。我的应用程序每帧渲染大约10万个顶点。
现在,当我将应用程序设置为以1的设备像素比率运行(意味着没有视网膜缩放)时,应用程序的性能稳定,永远不会低于60 fps,但图像质量是不可接受的。当我切换到视网膜的设备像素比率为2时,图像质量显着提高,但我的帧速率急剧下降到20-30 fps左右。
现在,我对GPU编程并不陌生,所以发生这种情况的原因对我来说是显而易见的。我想知道的是,有没有人找到任何变通方法或方法来优化WebGL绘图用于超高分辨率显示器与像视网膜Macbook Pro一样糟糕的GPU?是否有任何非显而易见的提示或技巧通过反复试验找到解决此问题或至少使其稍微好一些?
任何帮助将不胜感激。感谢。
编辑:带有趣发现的小更新。我把我的浏览器窗口放到连接到Macbook的外部显示器上,当在DPR为1的情况下进行渲染时,外部显示器上的性能甚至高于Macbook上的性能,即使分辨率完全相同,图像也是如此质量要好得多。
所以,即使你在Macbook Pro上渲染一个缩小尺寸的帧缓冲区,它仍然可以扩展它,这很可能导致图像质量不佳(它使用双线性滤波进行缩放,使其更加模糊。如果原始图像未受影响地显示。)
答案 0 :(得分:8)
只想更新所有关注此帖子的人。只需设置画布选项" antialias:false"我就可以让我的应用程序运行超过45 FPS。这在高密度显示器上获得了巨大的性能提升,因为高密度显示器提供了大量的内置抗锯齿,所以并不是必需的。希望这有助于将来的其他人。
答案 1 :(得分:2)
Mac OSx上的Chrome中有些东西不是硬件加速的。
看一下这个网址:
chrome://gpu/
如果您发现某些内容已被禁用,则可以使用以下方法进行调整:
chrome://flags/
缺点是,如果你发现有效的东西,它就不能完全展开。它可以让您深入了解瓶颈的位置。
(以下是可让您隐藏在Chrome中的隐藏和特殊位置的网址的完整列表:chrome://chrome-urls/
)
答案 2 :(得分:0)
我遇到了同样的问题。帮助的渲染器选项renderer.setPixelRatio (1);
Fps在Macbook Pro上从40上升到60。三js R86