Javascript 可以按特定顺序加载纹理吗?

Javascript 可以按特定顺序加载纹理吗?,javascript,three.js,webgl,Javascript,Three.js,Webgl,我目前正在向球体几何体的每个球体面加载不同的纹理,此时它从上到下加载纹理。在球体的中间开始加载纹理并继续向外加载吗 仅供参考,这是我目前为每个球体面指定纹理的方式 var sphere = new THREE.SphereGeometry( 250, geo_width, geo_height ); var materials = []; for( var y = 0; y < geo_height; y++ ){ for( var x = 0; x < geo_

我目前正在向球体几何体的每个球体面加载不同的纹理,此时它从上到下加载纹理。在球体的中间开始加载纹理并继续向外加载吗

仅供参考,这是我目前为每个球体面指定纹理的方式

var sphere  = new THREE.SphereGeometry( 250, geo_width, geo_height );   

var materials = []; 
for( var y = 0; y < geo_height; y++ ){
    for( var x = 0; x < geo_width; x++ ){
        materials.push( loadTexture('getImage.php?x=' + x + '&y=' + y + '&zoom=2&type=' + type ) );
    }   
}   

for( var i = 0; i < sphere.faces.length; i++ ){
    sphere.faces[ i ].materialIndex = i;
}   
var-sphere=新的三种球面测量法(250,geo_宽度,geo_高度);
var材料=[];
对于(变量y=0;y
是的,您可以这样做。 首先,你应该开始按照你想显示的顺序加载纹理。在你的情况下,你需要改变你的循环,第一次加载在球体中间的纹理。
var materials = new Array(geo_height*geo_width);
// loading middle part of textures
for( var y = yFrom; y < yTo; y++ ){
    for( var x = xFrom; x < xTo; x++ ){
        materials[y * geo_width + x] = loadTexture('getImage.php?x=' + x + '&y=' + y + '&zoom=2&type=' + type );
    }
}
// loading other textures
for( var y = 0; y < geo_height; y++ ){
    for( var x = 0; x < geo_width; x++ ){
        if (materials[y * geo_width + x] == undefined)
            materials[y * geo_width + x] = loadTexture('getImage.php?x=' + x + '&y=' + y + '&zoom=2&type=' + type );
    }
}
var materials=新阵列(地理高度*地理宽度);
//加载纹理的中间部分
对于(变量y=yFrom;y
有时,如果希望确保先加载某些纹理,然后再加载其他纹理,则可以使用加载回调函数对其进行同步。为此,请使用Imageutils.loadTexture(url、映射、onLoad、onError)。例如,按包加载纹理:

function loadTexturesPack(texturesPack, cb) {
    var count = 0,
        textures = [],
        onLoad = function() {
            count++;
            if (count == texturesPack.length) 
                cb(textures);
        };
    for (var i = 0; i < texturesPack.length; i++) {
        textures.push(Imageutils.loadTexture(texturesPack.url, null, onLoad));        
    }
}

function loadPacks(packs) {
    var i = 0;
        onLoad = function(textures) {
            i++;   
            // do something with loaded textures  
            // ...      
            // load next texture pack 
            if (i < packs.length) {
                loadTexturesPack(pack[i]);
            }
        };
    loadTexturesPack(pack[0]);
}
函数加载TexturePack(TexturePack,cb){
变量计数=0,
纹理=[],
onLoad=函数(){
计数++;
if(count==texturesPack.length)
cb(纹理);
};
对于(变量i=0;i