threejs 加载天空盒在手机浏览器导致页面重新加载问题

/*      load sky box helper
*       path : path
*       array: file name array
*       callback: load over return function
* */
var loadSkyBoxLoader = new THREE.CubeTextureLoader();
function loadSkyBox(path,array,callback) {
    loadSkyBoxLoader.setPath(path);
    loadSkyBoxLoader.load(array,callback);
}

以上是加载方式

以下是错误代码,这段代码加载两三个天空盒时也会正常显示但是五个以上的时候可能就会出现页面刷新的bug


    loadSkyBox('assets/skybox/main/',CUBE_MAP_ENV_FACES_JPG,function (box) {
         scene.background = box;
    });

以下是正确代码,需要将上次加载出来的天空盒进行一个存储,加载下个天空盒的时候将上个天空盒进行释放就不会出错了。


    var upSkyBox = null;

    loadSkyBox('assets/skybox/main/',CUBE_MAP_ENV_FACES_JPG,function (box) {
         if(upSkyBox) {
             upSkyBox.dispose();
             upSkyBox = null;
         }
         upSkyBox = box
         scene.background = upSkyBox;
    });
发布了36 篇原创文章 · 获赞 4 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_39342142/article/details/100996028