答案 0 :(得分:3)
因为需要预先分配缓冲区,所以需要先渲染更复杂的材质。
要做到这一点,你可以这样做:
window.mesh = new THREE.Mesh(
new THREE.SphereGeometry( 10, 20, 30 ),
new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('/img/logo.png')})
);
scene.add( mesh );
// render once
renderer.render( scene, camera );
// remove map
window.mesh.material.map = null;
window.mesh.material.needsUpdate = true;
如果您认为这太糟糕了,另一个解决方案是开始使用虚拟透明或纯色地图纹理。
您可以在three.js wiki:https://github.com/mrdoob/three.js/wiki/Updates上阅读有关此问题的更多信息。
这是一个更新的小提琴:http://jsfiddle.net/9VgTt/14/