我正在使用颗粒的webgl音频可视化程序,我想根据用户的硬件优化渲染。我想提供“低质量”和“高质量”设置,以使其在各种设备上都能正常使用。

是否可以在浏览器中自动检测是否用户有可用的硬件加速功能,并且一般来说他们的显卡是否好?
我最初对低质量的想法是:


渲染较少的几何图形(较少的粒子,并且“远”剪切距离更近)
使用较小的帧缓冲区并对其进行缩放达到画布的大小
较小的纹理大小

编辑:
此外,任何有关性能优化的资源都将受到赞赏。似乎搜索主要是帮助用户配置其显卡​​设置

评论

您是否要使用仅在给定图形卡上可用的特定功能?还是仅仅知道代码可以运行多快就足够了?这将确定您是否需要确定正在使用哪个图形卡(如果有),或者是否可以使用以最低质量设置启动并检测帧速率的方法,从而决定是否提高质量。 br />
我认为仅仅知道它可以运行多快就足够了

#1 楼

尽管您可能能够检测到可用的硬件作为计算机功能的第一近似值,但是取决于此功能可能没有用,因为相同的硬件根据托管的计算机以及可能执行的任何其他任务而表现不同

使用帧速率

您似乎已经在测量帧速率,因此只需使用此值即可确定要包括的功能。如果您确定目标帧速率,则可以将功能从最重要的到最可选的进行排序,并在不超出目标帧速率的情况下逐步添加不太重要的功能。如果帧速率下降,也请以相反的顺序删除功能部件(以免在可用资源发生变化时降低帧速率)。如果您决定这样做,建议将目标帧频设置为稍有不同的值,以添加和删除功能。否则,靠近两个功能级别之间的边界的某些机器可能最终会跳回,并在两个级别之间跳来跳去,不断添加和删除该功能。因此,将删除功能的触发器设置为比添加功能的触发器略低的帧速率。

您需要在添加新功能太快以至于帧速率突然下降之间找到一个折衷超出您的预期范围,并且添加特征的速度太慢,以至于出现几秒钟的低质量动画,然后才能确定适当的特征水平。如果帧速率已经大大超出目标,则您可以估计可以一次添加2或3个功能。这将取决于所涉及的特定功能,并且可能会在具有不同资源的各种机器上进行反复试验。

如果愿意,可以显示空白背景,直到帧速率稳定下来为止,这样用户就看不到正在调整的功能级别。另外,您也可以逐步调整功能,以使在给定的任何时刻都不会发生明显的变化。不论窗口大小如何(无论是全屏浏览器还是缩略图大小的浏览器窗口),都始终保持每秒一致。由于似乎粒子仅移动离开中心,并且不会在以后对它们剩下的区域做出贡献,因此当减小窗口大小时,可能值得考虑尽快放弃粒子。如果在减小窗口大小时允许更高的帧速率,则即使在全屏模式下无法使用,额外的功能也会被自动激活。

评论


$ \ begingroup $
甚至可以使用像素加倍。顺便说一句,无论如何我都能获得稳定的60 fps。
$ \ endgroup $
– joojaa
16-10-4在13:18

$ \ begingroup $
听起来我需要更新的计算机...
$ \ endgroup $
– trichoplax
16-10-4在14:06

$ \ begingroup $
我通常会在Macbook Pro上获得30-60的信息,具体取决于窗口的大小(WQHD显示器上的全屏会使它降低很多)。 (编辑:不小心按回车太早了)我希望您可以更多地采用一些特定的技术来最大化性能。我最初的想法是降低质量吗?
$ \ endgroup $
–尼克
16-10-4在19:41