Лучший способ принудительно загрузить текстуры в GPU во время загрузки сцены? - PullRequest
0 голосов
/ 07 января 2019

Мне было интересно, как можно заставить текстуры загружаться в GPU при загрузке сцены? Я читал раздел «Предварительная загрузка текстур GPU» в Best Practices , но я не совсем уверен, нужно ли это делать текстура за текстурой и элемент за элементом.

Есть старая ветка, которая говорит об этом здесь , но, похоже, счастливого конца пока нет: (

Имеет ли смысл совершать обход от sceneEl, прежде чем сцена загрузится, получить каждую текстуру и вызвать document.querySelector('a-scene').renderer.setTexture2D(eachTexture, 0)?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

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);
    };
  }();
0 голосов
/ 09 января 2019

Да, это имеет смысл сделать.

Просто позвоните sceneEl.renderer.setTexture2D(texture, i), передав текстуру three.js. И я думаю, что лучше переключать i на другое значение при каждом вызове от 1 до 8.

...