2013-08-02 2 views
2

THREE.TextureLoader()를 사용하여 텍스처를 미리로드하고 있지만 쉐이더에 할당 할 수 없습니다.Three.js로 텍스처를 미리로드하려면 어떻게해야합니까?

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); 
} 

을하지만 이것은 다음과 같은 오류가 발생합니다 : 다른 함수에서

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

, 나는 장면을 초기화 assetsLoaded을 확인

Uncaught TypeError: Cannot read property 'x' of undefined 

답변

2

이미 그것을 알아 냈다!

텍스처를 매개 변수로 사용하여 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); 
} 
2

다른 대답은 이전 버전에 종사 할 수 있음이 내가

var textureLoader = new THREE.TextureLoader(); 
textureLoader.load(url); 

// Add the event listener 
textureLoader.addEventListener('load', function(event){ 

    // The actual texture is returned in the event.content 
    sphere.material.map = event.content; 

}); 
작업 그것을 가지고 어떻게
관련 문제