调用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纹理吗?
谢谢
最佳答案
我的width参数似乎太大(超过24,000)。
我在一个长纹理中加载了一系列字符,所以我要做的就是删除不必要的字符以减小宽度,而我不再遇到该错误。
另一个解决方案是先固定宽度然后再堆积(但是由于每个字符的宽度都可变,所以这对我来说并不容易)。
glTexImage2D() man page的相关错误条件是:
可以使用glGetIntegerv(GL_MAX_TEXTURE_SIZE, ...)
查询纹理大小的限制。