2016-11-20 26 views
-1

我的位置和正常的,比方說兩個紋理的物體,如何變換three.js所的紋理的WebGL

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

其通過GPUComputationRendererthree.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生成的紋理對象轉換爲由WebGL通過'gl.createTexture();'生成的WebGLTexture格式?對不起,我不熟悉JavaScript。再次感謝。 – zzj

+0

我不知道如何從'THREE.Texture'獲得'WebGLTexture'。我會問一個單獨的問題,如「如何從一個THREE.Texture獲得WebGLTexture?」 – gman