是否可以强制模型在WebGL中完全加载?

时间:2013-08-21 02:20:34

标签: webgl

我正在加载一堆obj模型,这些模型相当重,每个都有120多个纹理。它们加载精细并最终渲染,但是当它们第一次被绘制时,帧速率在地板上下降,对象的材质在加载纹理之前显示为黑色。

有没有办法确保模型及其纹理在显示之前完全加载,或至少查询它们是否已准备好被绘制? 另外,有没有办法鼓励纹理加载?看起来它们在绘制对象之前不会加载。

由于

1 个答案:

答案 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
}

基本上,只需检查每帧加载了多少纹理,最后加载时你就可以进行绘图了。