我正在加载一堆obj模型,这些模型相当重,每个都有120多个纹理。它们加载精细并最终渲染,但是当它们第一次被绘制时,帧速率在地板上下降,对象的材质在加载纹理之前显示为黑色。
有没有办法确保模型及其纹理在显示之前完全加载,或至少查询它们是否已准备好被绘制? 另外,有没有办法鼓励纹理加载?看起来它们在绘制对象之前不会加载。
由于
答案 0 :(得分:0)
var images = [/*..image list...*/];
var loaded = [];
var numReady = 0;
for(var i= images.length-1; i>=0; i--) {
loaded[i] = new Image();
loaded[i].src = images[i];
loaded[i].onload = function() {
numReady++;
};
}
// in render loop
if(numReady==images.length) {
//now ready to render
}
基本上,只需检查每帧加载了多少纹理,最后加载时你就可以进行绘图了。