我正在尝试测量加载 webgl 中的图像所需的时间。
我正在考虑使用 gl.finish() 来获取图像加载前后的时间戳,并将两者相减以获得准确的测量结果,但是我找不到这种用法的好例子。
这种事情是否可能,如果可以,有人可以提供示例代码吗?
最佳答案
现在可以使用 EXT_disjoint_timer_query_webgl2
扩展为 WebGL2 执行计时。
const ext = gl.getExtension('EXT_disjoint_timer_query_webgl2');
const query = gl.createQuery();
gl.beginQuery(ext.TIME_ELAPSED_EXT, query);
/* gl.draw*, etc */
gl.endQuery(ext.TIME_ELAPSED_EXT);
稍后,您可以获得查询的运行时间:
const available = this.gl.getQueryParameter(query, this.gl.QUERY_RESULT_AVAILABLE);
if (available) {
const elapsedNanos = gl.getQueryParameter(query, gl.QUERY_RESULT);
}
需要注意的几件事:
- 一次只能进行一个计时查询。
- 结果可能会异步提供。如果每一帧有多个时间调用,您可以考虑使用查询池。
关于javascript - 是否可以使用 gl.finish() 测量 webgl 中的渲染时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798294/