我试图将Three.js纹理传递给gl.texSubImage WEBGL函数,但出现以下错误:
在Chrome上:
在Firefox上:
下面的代码-目标texture2传递给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);
答案 0 :(得分:1)
我建议您看看WebGLRenderer.copyTextureToTexture()。它在内部使用texSubImage
。还有一个示例显示了该方法的用法:
https://threejs.org/examples/webgl_materials_texture_partialupdate.html
BTW:在image.data
中使用bindTexture
无效,因为API调用期望将WebGLTexture
对象作为第二个参数。您可以访问像这样的原始WebGLTexture
对象。
var textureProperties = renderer.properties.get( texture );
console.log( textureProperties.__webglTexture );