Javascript 如何将three.js纹理传递为";WebGLTexture“;到WEBGL代码?
我试图将three.js纹理传递给gl.texSubImage WEBGL函数,但出现以下错误: 在Chrome上: 在Firefox上: 代码如下-目标texture2被传递到gl.bindTexture bellow,无法识别。源纹理1是加载了图像的纹理 我尝试过:texture2,texture2.image,texture2.image.data, 使用datatexture和加载图像作为texture2的普通纹理。 有什么想法吗Javascript 如何将three.js纹理传递为";WebGLTexture“;到WEBGL代码?,javascript,three.js,webgl,textures,Javascript,Three.js,Webgl,Textures,我试图将three.js纹理传递给gl.texSubImage WEBGL函数,但出现以下错误: 在Chrome上: 在Firefox上: 代码如下-目标texture2被传递到gl.bindTexture bellow,无法识别。源纹理1是加载了图像的纹理 我尝试过:texture2,texture2.image,texture2.image.data, 使用datatexture和加载图像作为texture2的普通纹理。 有什么想法吗 var gl = renderer.getCont
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);
var gl=renderer.getContext();
变量位置=新的三个向量2(0,0);
renderer.setTexture2D(texture2,0);
gl.bindTexture(gl.TEXTURE_2D,texture2.image.data)// 我建议你看看。它在内部使用texSubImage
。还有一个示例显示了该方法的用法:
顺便说一句:在bindTexture
中使用image.data
不起作用,因为API调用需要一个WebGLTexture
对象作为第二个参数。您可以访问以下纹理的原始WebGLTexture
对象
var textureProperties = renderer.properties.get( texture );
console.log( textureProperties.__webglTexture );
谢谢,我已经在这里尝试了copyTextureToTexture:问题是在复制之后,目标纹理在过滤minFilter和magFilter时无法正常工作,和/或各向异性只能部分工作。您可以在该帖子的代码段上看到瑕疵。因此,我正在尝试核心WEBGL,以防某个地方出现three.js错误,但经过您的更正后,它可以工作,但我得到了相同的结果。bug可能在three.js或WEBGL代码的其他地方。您可能希望在不使用three.js
的情况下创建一个简化的测试用例,以查看它是否是WEBGL的默认行为。