解析webgl上的obj文件,XMLHttpRequest问题

时间:2014-06-26 15:01:10

标签: javascript parsing xmlhttprequest webgl .obj

我在javascript上为WebGL制作了.obj模型的加载器,而我似乎已经遇到了XMLHttpRequest方法的问题,让我解释一下;

var textureArray=[];
loadTexture=function(name){
    var request = new XMLHttpRequest();
    request.open("GET", name+'.mtl');
    request.onreadystatechange = function () {
        if (request.readyState == 4) {
            //do the stuff to put the textures in textureArray
        }
    }
    request.send();
}

让我们说使用它的方法就是:

loadObjModel=function(name){
      loadTexture(name);
    //Check if the texture loaded
}

问题是,当我说“检查纹理是否已加载”时,变量“textureArray”它是空的,但是如果我在“执行将纹理放入textureArray中之后立即检查”(在onreadystatechange函数内)它确实显示正确加载的纹理。 我发现问题是什么,它需要时间来读取文件并循环通过线,所以此刻我“检查纹理是否加载”它还没有完成,但是当我在结束时“做”将纹理放在textureArray中的东西“播放它正确加载,因为它必须等待加载所有内容然后显示textureArray的内容。

这里的一个大问题是,当我尝试使用我在“检查纹理是否加载”时加载的纹理,我不能......因为它们不在那里,我看到了webGL加载器以这种方式,没有那个问题。 扫管笏,我可能是错的吗?,谢谢你的想法:)

1 个答案:

答案 0 :(得分:-1)

当您调用open方法时,可以通过添加 false 来使ajax调用同步:

request.open("GET", name+'.mtl', false);

这应该让你的脚本等到loadTexture()返回之前再做'检查纹理是否加载'的东西。