调用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纹理好吗?
由于
答案 0 :(得分:1)
我的宽度参数似乎太大了(超过24,000)。
我在一个长纹理中加载了一系列字符,所以我所做的就是删除不必要的字符以降低宽度,我不再收到错误。
另一个解决方案是只有一个固定的宽度然后构建(但由于每个角色的宽度可变,这对我来说并不容易)。
glTexImage2D() man page的相关错误情况是:
如果宽度或高度小于0或大于GL_MAX_TEXTURE_SIZE,则会生成GL_INVALID_VALUE。
可以使用glGetIntegerv(GL_MAX_TEXTURE_SIZE, ...)
查询纹理大小的限制。