Javascript 没有绑定到单元0的纹理
我目前面临着一个我似乎无法理解的错误 在chrome中,我收到:Javascript 没有绑定到单元0的纹理,javascript,webgl,Javascript,Webgl,我目前面临着一个我似乎无法理解的错误 在chrome中,我收到: GL ERROR :GL_INVALID_VALUE : glTexImage2D: invalid internal_format GL_FALSE RENDER WARNING: there is no texture bound to the unit 0 这导致我的3D对象只有一个黑色纹理,而不是我等待渲染的图像。因此,我在稍微修改代码后找到了答案,结果证明这是一个简单的解决方案(可能是我的愚蠢),但我过去的做法是: v
GL ERROR :GL_INVALID_VALUE : glTexImage2D: invalid internal_format GL_FALSE
RENDER WARNING: there is no texture bound to the unit 0
这导致我的3D对象只有一个黑色纹理,而不是我等待渲染的图像。因此,我在稍微修改代码后找到了答案,结果证明这是一个简单的解决方案(可能是我的愚蠢),但我过去的做法是:
var boxTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, boxTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE,document.getElementById('crate-image'));
gl.bindTexture(gl.TEXTURE_2D, null);
需要改变的只是顺序,所以现在看起来是这样的:
var boxTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, boxTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE,document.getElementById('crate-image'));
gl.bindTexture(gl.TEXTURE_2D, null);
internal_format
是gl.texImage2D
的第三个参数。错误消息表示您正在传递0
或未定义的或null
。所有这些都变成0
,这与GL\u FALSE
相同
您需要传递有效的内部格式,如gl.RGBA
,gl.RGB
,等等
第二个错误是因为第一个错误。这毫无意义。此外,错误与修改的行无关,仅与texImage2D
行有关。你确定这就是错误所在吗?我从你的问题中删除了three.js标记,因为你显然在做手工WebGL。如果你不提供任何代码,你希望我们如何帮助你?