在场景加载时强制纹理上载到GPU的最佳方法?

时间:2019-01-07 19:44:04

标签: aframe

我想知道在场景加载时强制将纹理上传到GPU的最佳方法吗?我已经阅读了Best Practices中的“ GPU Texture Preloading”(GPU纹理预加载)部分,但是我不确定是否需要按纹理和逐个元素地进行处理。

有一个老话题在谈论它here,但到目前为止似乎还没有一个圆满的结局:(

在场景加载之前从场景El遍历是否有意义,获取每个纹理并调用document.querySelector('a-scene').renderer.setTexture2D(eachTexture, 0)

谢谢

2 个答案:

答案 0 :(得分:0)

是的,这样做很有意义。

只需调用sceneEl.renderer.setTexture2D(texture, i),并传入three.js纹理即可。而且我认为最好将i循环为每个介于1到8之间的值。

答案 1 :(得分: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);
    };
  }();