我想知道在场景加载时强制纹理上传到GPU的最佳方法?我已经阅读了最佳实践中的 GPU 纹理预加载部分,但我不太确定这是否需要逐个纹理和逐个元素地完成。
这里有一个旧线程在谈论它,但到目前为止它似乎没有一个圆满的结局:(
在场景加载之前从场景进行遍历,获取每个纹理并调用document.querySelector('a-scene').renderer.setTexture2D(eachTexture, 0)
是否有意义?
谢谢
setTexture2D
从R103开始不再存在。你可以改用这样的东西
const forceTextureInitialization = function() {
const material = new THREE.MeshBasicMaterial();
const geometry = new THREE.PlaneBufferGeometry();
const scene = new THREE.Scene();
scene.add(new THREE.Mesh(geometry, material));
const camera = new THREE.Camera();
return function forceTextureInitialization(texture) {
material.map = texture;
renderer.render(scene, camera);
};
}();
是的,这样做是有意义的。
只需调用sceneEl.renderer.setTexture2D(texture, i)
,传递三个.js纹理。而且我认为最好在 1 到 8 之间的每次调用之间将i
循环到不同的值。