2016-11-20 2 views
-1

я получил два текстурных объектов положение и нормально, скажем,Как преобразовать текстуру three.js в WebGL

var tx1 = gpuCompute.getCurrentRenderTarget(positionVariable).texture; 
var tx2 = gpuCompute.getCurrentRenderTarget(normalVariable).texture; 

, который рассчитывается по GPUComputationRenderer из three.js (обратитесь к примеру gpgpu/protoplanet (1))

Я хочу, чтобы преобразовать его в WebGLBuffer объект для визуализации, как:

gl.bindBuffer(gl.ARRAY_BUFFER, tx1); 
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0); 

gl.bindBuffer(gl.ARRAY_BUFFER, tx2); 
gl.vertexAttribPointer(shaderProgram.vertexNormalAttribute, 3, gl.FLOAT, false, 0, 0); 

Но прямое назначение не в порядке.

Я хочу спросить, есть ли способ сделать это. Снимок формата этих двух объектов показан следующим образом (tx1 - от трех js, а tx3 - от WebGL). Благодарю.

(1) https://threejs.org/examples/#webgl_gpgpu_protoplanet

enter image description here

ответ

1

Вы не можете копировать текстуры в буфер непосредственно. Почему бы просто не использовать их в качестве текстур? Вот пример, который отображает позиции из текстуры.

https://stackoverflow.com/a/22009385/128511

+0

Большое спасибо. Тогда есть способ преобразовать этот объект текстуры, сгенерированный с помощью файла three.js в формат WebGLTexture, сгенерированный WebGL, с помощью 'gl.createTexture();'? Извините, что я не знаком с javascript. Еще раз спасибо. – zzj

+0

Я не знаю, как получить 'WebGLTexture' из' THREE.Texture'. Я задал бы отдельный вопрос для этого, как в «Как получить WebGLTexture из THREE.Texture?» – gman

Смежные вопросы