2016-11-20 6 views
-1

Ich habe zwei Texturobjekte von Position und normal, sagen wir,Wie Textur von three.js zu WebGL verwandeln

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

die (gpgpu/protoplanet siehe Beispiel (1)) durch GPUComputationRenderer von three.js berechnet

ich will es auf ein für die Darstellung, wie WebGLBuffer Objekt zu transformieren:

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); 

Aber die direkte Zuordnung ist nicht in Ordnung.

Ich möchte fragen, ob es einen Weg gibt, es zu tun. Der Schnappschuss des Formats dieser zwei Objekte wird wie folgt gezeigt (tx1 ist von threejs und tx3 ist von WebGL). Vielen Dank.

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

enter image description here

Antwort

1

Sie nicht direkt Texturen in Puffer kopieren können. Warum nicht einfach als Texturen verwenden? Hier ist ein Beispiel, das Positionen aus einer Textur rendert.

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

+0

Vielen Dank. Dann gibt es eine Möglichkeit, das Texturobjekt, das von three.js generiert wurde, in das WebGLTexture-Format zu transformieren, das von 'GL.createTexture();'? Tut mir leid, dass ich nicht mit Javascript vertraut bin. Danke noch einmal. – zzj

+0

Ich weiß nicht, wie man eine 'WebGLTexture' aus' THREE.Texture' erhält. Ich würde dafür eine separate Frage stellen wie in "Wie bekomme ich eine WebGL-Textur aus einer DREI.Textur?" – gman