没有纹理绑定到单位0

时间:2017-02-21 04:03:58

标签: 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对象只有黑色纹理,而不是我等待渲染的图像。

2 个答案:

答案 0 :(得分:0)

item.style = { display: 'inline' } internal_format的第3个参数。错误消息说您正在通过gl.texImage2D0undefined。所有这些都变为null,与0相同。

您需要传递有效的内部格式,例如GL_FALSEgl.RGBA等...

第二个错误是因为第一个错误。

答案 1 :(得分:-3)

所以我在摆弄了我的代码之后找到了答案,结果是一个简单的修复(也许是我的愚蠢),但我曾经有过这样的:

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);