GL_INVALID_VALUE at glTexImage2D

GL_INVALID_VALUE at glTexImage2D

本文关键字:glTexImage2D at INVALID GL VALUE      更新时间:2023-10-16

调用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,它解决了我的问题。这让我相信这是一个2次幂的问题。但我不明白的是,我认为我使用的opengl版本有NPOT纹理可用?

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

这应该支持NPOT纹理好吗?

谢谢

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

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

另一个解决方案是只有一个固定的宽度,然后建立(但这对我来说不是那么容易,因为每个字符都有一个可变的宽度)。

来自glTexImage2D()手册页的相关错误条件是:

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

纹理大小限制可通过glGetIntegerv(GL_MAX_TEXTURE_SIZE, ...)查询。