gpt4 book ai didi

javascript - 测量渲染时间

转载 作者:行者123 更新时间:2023-11-28 00:30:39 28 4
gpt4 key购买 nike

我有一个 WebGL 场景和一组可用于平衡渲染质量与速度的参数。我希望以尽可能高的质量向用户显示场景,只要帧速率不会因此而下降到某个阈值以下。为了实现这一目标,我必须以某种方式测量“当前”帧速率以响应质量的变化。

但是只要用户不与其交互(例如使用鼠标旋转相机),场景就是静态的。我不想让循环始终重新渲染同一场景,即使没有任何变化。如果场景停止移动,我想停止渲染。这意味着我不能简单地平均连续帧之间的时间,因为我无法区分渲染器速度慢和用户只是更慢地移动鼠标。

我想过在启动时多次渲染场景,并由此判断帧速率。但场景的复杂性可能会随着时间的推移而变化,这是由于从当前相机位置可见的场景部分,或者由于 Canvas 外的用户交互。因此,我必须随着场景复杂性的变化而调整质量。每次释放鼠标后运行校准循环可能是一种选择。

我还考虑过使用 finish 调用而不是 flush 调用来准确测量渲染时间。但是,当我等待 GL 完成渲染时,我的应用程序基本上没有响应,特别是无法对鼠标事件进行排队。由于我设想渲染理想情况下会以目标阈值帧速率占用两帧之间的所有时间,因此这可能会相当糟糕。仅在某些情况下(例如释放鼠标后),我可能会使用 finish 而不是 flush

在 WebGL 应用程序中实现所需帧速率或定期测量渲染时间的最佳方法是什么?

最佳答案

为什么不能使用平均渲染时间?

仅仅因为渲染频率较低,并不意味着您无法平均渲染时间。只是需要更长的时间才能获得准确的平均值。

一旦用户开始移动鼠标,您就会收到大量数据,无论如何,这应该很快就会为您提供平均渲染率。

关于javascript - 测量渲染时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29030714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com