我正在加载一堆 obj 模型,它们相当重,每个模型有 120 个奇怪的纹理。它们加载良好并最终渲染,但当它们第一次绘制时,帧速率下降通过地板并且对象的材料显示为黑色,直到纹理被加载。
有没有办法确保模型及其纹理在显示之前完全加载,或者至少查询它们是否准备好绘制?另外,有没有办法鼓励纹理加载?似乎在绘制对象之前它们不会加载。
谢谢
我正在加载一堆 obj 模型,它们相当重,每个模型有 120 个奇怪的纹理。它们加载良好并最终渲染,但当它们第一次绘制时,帧速率下降通过地板并且对象的材料显示为黑色,直到纹理被加载。
有没有办法确保模型及其纹理在显示之前完全加载,或者至少查询它们是否准备好绘制?另外,有没有办法鼓励纹理加载?似乎在绘制对象之前它们不会加载。
谢谢
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
}
基本上,只需检查每帧加载了多少纹理,当它们最终加载时,您就可以开始绘制了。