Как я могу передать текстуру three.js как "WebGLTexture" в код WEBGL? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь передать текстуру three.js в функцию gl.texSubImage WEBGL и получаю следующую ошибку:

В Chrome:

Uncaught TypeError line

В Firefox:

enter image description here

Код следует ниже - текстура назначения2 передается в gl.bindTexture ниже и не распознается. Исходная текстура texture1 - это текстура, загруженная изображением.

Я пробовал: texture2, texture2.image, texture2.image.data, как с текстурой данных, так и с нормальной текстурой, загруженной с изображением в качестве texture2. Есть идеи?

var gl = renderer.getContext();
var position = new THREE.Vector2(0,0);

renderer.setTexture2D( texture2, 0 ); 

gl.bindTexture(gl.TEXTURE_2D, texture2.image.data); //<<< problem

gl.texSubImage2D( gl.TEXTURE_2D, 
                  0, 
                  position.x, 
                  position.y, 
                  gl.RGB, 
                  gl.UNSIGNED_BYTE, 
                  texture1.image);

1 Ответ

0 голосов
/ 29 июня 2018

Я предлагаю вам взглянуть на WebGLRenderer.copyTextureToTexture () . Внутренне использует texSubImage. Есть также пример, который показывает использование метода:

https://threejs.org/examples/webgl_materials_texture_partialupdate.html

Кстати: использование image.data в bindTexture не работает, поскольку вызов API ожидает объект WebGLTexture в качестве второго параметра. Вы можете получить доступ к необработанному объекту WebGLTexture текстуры, подобной этой.

var textureProperties = renderer.properties.get( texture );
console.log( textureProperties.__webglTexture );
...