测量渲染时间
Measure render time
我有一个WebGL场景,以及一组可以用来平衡渲染质量和速度的参数。我想以尽可能高的质量向用户显示场景,只要帧速率不会因此而低于某个阈值。为了实现这一点,我必须以某种方式测量"当前"帧速率以响应质量的变化。
但只要用户不与之交互(例如使用鼠标旋转相机),场景就是静态的。我不想让一个循环一直重新渲染相同的场景,即使没有任何变化。如果场景停止移动,我想停止渲染。这意味着我不能简单地平均连续帧之间的时间,因为我无法区分渲染器很慢和用户只是移动鼠标更慢。
我在启动时多次考虑渲染场景,并据此判断帧速率。但是,由于从当前摄像机位置可见的场景部分,或者由于画布外的用户交互,场景的复杂性可能会随时间而变化。因此,我必须随着场景复杂性的变化而调整质量。在每次释放鼠标后运行校准循环可能是一种选择。
我还考虑过使用 finish
调用而不是 flush
调用来准确测量渲染时间。但是,当我等待 GL 完成渲染时,我的应用程序基本上没有响应,特别是无法对鼠标事件进行排队。由于我设想渲染理想地以目标阈值帧速率占用两帧之间的所有时间,因此这可能相当糟糕。我可能会在某些情况下使用finish
而不是flush
,例如在鼠标释放后。
在 WebGL 应用程序中实现所需的帧速率或定期测量渲染时间的最佳方法是什么?
为什么不能使用平均渲染时间?
仅仅因为渲染频率较低,并不意味着无法平均渲染时间。只是需要更长的时间才能获得准确的平均值。
一旦用户开始移动鼠标,您将获得大量数据,无论如何,这应该很快就会为您提供平均渲染速率。
相关文章:
- 测量输入时间
- 有没有更好的方法可以测量从Ajax调用返回数据所需的总时间
- 在Chrome开发工具中测量步骤之间的时间
- 测量渲染时间
- HTTP使用拦截器测量每个请求的时间
- HTML5(测量页面加载时间)
- 如何在safari中测量tel://link的呼叫时间
- 测量JavaScript函数的内存使用情况、执行时间和性能
- 如何测量javascript解析时间
- 如何测量大型数组的加载时间
- 如何测量 http.NodeJS 中的 ClientRequest 响应时间
- 测量角度引导时间
- 如何测量将JSON字符串解析为Javascript对象的时间
- 如何在PhantomJS中测量渲染时间
- REST API测量服务器端响应时间(性能)
- Javascript:在线测量代码执行时间
- 如何在Safari中以微秒精度测量JavaScript函数的执行时间
- 测量ajax接收时间
- 动画回调架构和时间测量时,使用html5画布
- 如果javascript是单线程的,如何测量多个ajax调用的时间