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