我正在开发一个webgl 音频可视化器,它使用粒子,我想根据用户的硬件来优化渲染。我想提供一个“低质量”和“高质量”设置,以便它能很好地工作在广泛的设备。
是否有一种方法可以在浏览器中自动检测用户是否有可用的硬件加速,以及他们的显卡是否良好?
有什么技术来渲染低质量和高质量?我对低质量的最初想法是:
编辑:此外,任何资源的性能优化将不胜感激。似乎搜索的主要结果是帮助用户配置他们的图形卡设置。
发布于 2016-10-03 23:50:00
虽然您可能能够检测到哪些硬件可用作为计算机功能的第一次近似,但取决于这一点可能并不有用,因为相同的硬件可能因其所在的计算机以及任何其他可能与其竞争的任务而具有不同的行为。
看起来您已经在测量帧速率了,所以您可以简单地使用这个值来决定包含哪些功能。如果您确定了目标帧速率,那么您可以将您的功能从最基本的功能排序到最可选的功能,并在超过目标帧速率的情况下逐步添加一些不太重要的功能。
如果帧速率下降,您也可以按相反顺序删除功能(以避免在可用资源发生变化时的帧速率差)。如果您决定这样做,我建议将目标帧速率设置为添加和删除功能的稍微不同的值。否则,在两个功能级别之间的边界附近的一些机器可能会跳回和在两个级别之间跳过,不断地添加和删除该特性。因此,将删除功能的触发器设置为比添加特性的触发器略低一些。
您需要在添加新功能的速度过快以使帧速率突然比您预期的更低之间找到一个折衷方案,而添加功能的速度太慢,以便在设置适当级别的功能之前有几秒钟的低质量动画。您可能可以估计,如果帧速率已经远远超过目标,则一次可以添加2或3项功能。这将取决于所涉及的具体特性,并可能在各种具有不同资源的机器上进行一些尝试和错误。
如果您愿意,您可以显示一个空白的背景,直到帧速率确定,这样用户就不会看到功能级别正在调整。或者,您可能能够充分地逐步调整这些特征,以便在任何给定的时刻都不会有任何可察觉的变化。
在我的笔记本电脑上,无论窗口大小是全屏还是缩略图大小的浏览器窗口,每秒都能得到4帧。由于粒子似乎只从中心移动,而对它们所离开的区域不起作用,因此,当窗口尺寸缩小时,可能值得考虑尽早放弃粒子。如果这允许一个更高的帧速率时,窗口大小减少,那么额外的功能将自动激活,即使他们不可能在全屏。
https://computergraphics.stackexchange.com/questions/4065
复制相似问题