我有两个场景:主要的一个场景,渲染一个带纹理的平面,第二个场景,应该渲染成一个纹理。该纹理应该用作主场景中飞机的地图。
所有THREE.WebGLRenderTarget
示例出于某种原因都会在每帧重绘两个场景,但是我希望将我的第二个场景仅渲染一次到纹理。比渲染结果应存储为其他任何纹理。
here提供了一个简化的小提琴。在animate()
函数中,您可以删除if(i === 0)
,以便每帧渲染第二个场景。
答案 0 :(得分:2)
纹理加载是异步的。您需要先确保纹理已加载,然后再使用。
一种解决方案是在加载程序回调中调用animate()
。
beginTexture = new THREE.TextureLoader().load( "https://i.imgur.com/eoQwyRb.png", animate );
另一种解决方案是使用加载管理器。
three.js r.102