【发布时间】:2014-07-23 13:05:45
【问题描述】:
调用 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
我已将宽度和高度的值分别替换为 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)用 GL_R8 替换第一个 GL_RED,2)使用 4 的倍数宽度(也可能是高度)。
-
这是我的宽度参数超过 24,000。我认为它太大了(它是字体纹理的一行字符)。所以我刚刚删除了我正在加载的不必要的字符,现在它工作正常。