three.js - 如何使用 Three.js 预加载纹理?

标签 three.js textures preloading

我正在使用 THREE.TextureLoader() 来预加载纹理,但我似乎无法将它们分配给我的着色器。

var textureLoader = new THREE.TextureLoader();
textureLoader.load('img/texture.jpg', function(){
    assetsLoadedCount++;
});

在另一个函数中,我检查 assetsLoaded 来初始化我的场景:

if(assetsLoadedCount == totalAssetsCount)
{
    // Create a sphere:
    var sphere = new THREE.Mesh(
        new THREE.SphereGeometry(100, 10, 10),
        new THREE.MeshBasicMaterial({
            map: textureLoader
        })
    );
    scene.add(sphere);
}

但这会引发以下错误:

Uncaught TypeError: Cannot read property 'x' of undefined 

最佳答案

已经想通了!

结果是 load() 方法的回调函数将纹理作为参数。所以:

var textureLoader = new THREE.TextureLoader();
textureLoader.load('img/texture.jpg', function(t){
    assetsLoadedCount++;
    loadedTexture = t;
});

进一步:

if(assetsLoadedCount == totalAssetsCount)
{
    // Create a sphere:
    var sphere = new THREE.Mesh(
        new THREE.SphereGeometry(100, 10, 10),
        new THREE.MeshBasicMaterial({
            map: loadedTexture
        })
    );
    scene.add(sphere);
}

关于three.js - 如何使用 Three.js 预加载纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18012361/

相关文章:

javascript - three.js:无法使用 THREE.OBJLoader 显示 obj 文件

three.js - 从 Three.js 导出到 .obj

three.js - 像 OrbitControls 一样旋转对象,但只旋转对象本身

opengl - 为 2D 纹理数组生成 mip 级别

javascript - 如何在 Javascript/jQuery 中预加载预定义图像?

php - 是否可以有一个持久的 PHP session 来更快地交付网页?

javascript - 三个 js 立方体是黑色的...不是红色的

javascript - 错误的纹理设置或疯狂的纹理行为

opengl - 在 opengl 中显示任意大小的二维图像

php - 在请求播放之前,如何阻止嵌入的声音片段下载到浏览器缓存中?