javascript – 是否可以使用gl.finish()测量webgl中的渲染时间?

前端之家收集整理的这篇文章主要介绍了javascript – 是否可以使用gl.finish()测量webgl中的渲染时间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试测量webgl中加载图像所需的时间.

我正在考虑使用gl.finish()来获取图像加载前后的时间戳,并减去两者以获得准确的测量值,但是我找不到这种用法的好例子.

这种事情是否可行,若有人能提供示例代码

解决方法

不它不是.

实际上在Chrome中,gl.finish只是一个gl.flush. See the code搜索“:: finish”.

由于Chrome是多进程并且实际上实现了深度安全性,因此实际的GL调用是在JavaScript的另一个进程中发出的,所以即使Chrome确实调用了gl.finish,它也会在另一个进程中发生,并且来自JavaScript的POV将不准确以任何形式或形式的时间安排.由于类似的原因,Firefox显然正在做类似的事情.

即使在Chrome之外,每个驱动程序都会以不同的方式处理gl.finish.使用gl.finish进行计时并不是有用的信息,因为它不能代表实际速度,因为它包括拖延GPU管道.换句话说,使用gl.finish的时序包括许多在实际使用中不会发生的开销,因此不能准确测量某些东西执行正常情况的速度.

某些GPU上有GL扩展以获取时序信息.不幸的是,它们(a)在WebGL中不可用,并且(b)不可能因为它们不能携带,因为它们无法真正处理像许多移动电话中那样的平铺GPU.

而不是询问如何定时GL调用你想要通过计时来实现什么?也许人们可以建议解决方案.

猜你在找的JavaScript相关文章