Javascript 没有绑定到单元0的纹理

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

我目前面临着一个我似乎无法理解的错误

在chrome中,我收到:

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。如果你不提供任何代码,你希望我们如何帮助你?