在Windows 10(带有Three.js)上的WebGL中初始化大(4096 x 4096)纹理时,Chrome的主线程停滞了相当长的时间,而探查器却什么也没发生。
这是4096 x 4096纹理的示例配置文件:
在1500毫秒之前的“高原”是对Three.js和WebGL中的texImage2D
的调用,然后在出现幻象间隙之前,两次调用了requestAnimationFrame
代码。
是什么原因造成的? chrome中的基础WebGL代码是否发生了事件探查器未报告的情况?为什么调用texImage2D
需要90毫秒,然后出现空白?我希望所有将纹理加载到GPU的工作都会在此处进行。
Here is a link应该重现该行为。
最佳答案
4096 x 4096是一个大纹理,需要花费一些时间才能将所有数据传输到GPU。如果要先调用texImage2D
,然后立即调用drawArrays
,则只有在drawArray
中完成上传后,才能执行texImage2D
。这解释了您在探查器中看到的延迟。