glTexImage2D上的GL_INVALID_VALUE

时间:2014-07-22 15:19:22

标签: c++ opengl

调用glTexImage2D()后,我收到GL_INVALID_VALUE错误

GLCheckForErrors();  // no error
glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, 0);
GLCheckForErrors();  // error printed here

我已经将width和height的值分别替换为512和512,它解决了我的问题。这让我相信这是一个两个权力的问题。但是我不明白的是我认为我正在使用的opengl版本有NPOT纹理吗?

OpenGL Version - 4.1 INTEL-8.28.30
GLSL Version - 4.10
Renderer - Intel HD Graphics 5000 OpenGL Engine

这应该支持NPOT纹理好吗?

由于

1 个答案:

答案 0 :(得分:1)

我的宽度参数似乎太大了(超过24,000)。

我在一个长纹理中加载了一系列字符,所以我所做的就是删除不必要的字符以降低宽度,我不再收到错误。

另一个解决方案是只有一个固定的宽度然后构建(但由于每个角色的宽度可变,这对我来说并不容易)。

glTexImage2D() man page的相关错误情况是:

  

如果宽度或高度小于0或大于GL_MAX_TEXTURE_SIZE,则会生成GL_INVALID_VALUE。

可以使用glGetIntegerv(GL_MAX_TEXTURE_SIZE, ...)查询纹理大小的限制。