小编Jac*_*311的帖子

glTexImage2D'目标无效'

我正在编写一个游戏引擎,但是在加载纹理时我遇到了一个令人费解的问题.

我的代码如下:

//Load to GL
glGenTextures(1, &glTextureID);
glBindTexture(GL_TEXTURE_2D, glTextureID);
glTexImage2D(glTextureID, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, data);
Run Code Online (Sandbox Code Playgroud)

在启用GL调试输出的情况下单步执行会显示该glTexImage2D行给出错误:

错误已生成.GL错误GL_INVALID_ENUM in(null):( ID:1938861751)1无效.

格式取决于正在加载的图像,并使用FreeImage.(与两种图像类型GL_RGBAGL_RED各图像类型分开).width/ height也确定为FreeImage,在这种GL_RGBA情况下两个值均为512 .我的理解是这些值对两种格式参数都有效.

使用的完整代码FreeImage有点冗长,包含在这里,并使用多个线程(我确信这个代码在主线程上运行,我在这些行之前断言).

以下也不起作用:

glTexImage2D(glTextureID, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
Run Code Online (Sandbox Code Playgroud)

我找不到任何其他有此错误的人.我已经研究了如何GL_INVALID_ENUM抛出,但是没有任何记录的方法似乎适用,当然也没有我收到的消息.

glTextureID这些行之间的值不会被修改,保持为"1".

尝试加载其他纹理时,也会抛出相同的错误,"目标"不同.

我的GL上下文被正确初始化,因为我能够使用其他GL函数,并成功绘制无纹理多边形.

可能是什么导致了这个?

c++ opengl 3d graphics

1
推荐指数
1
解决办法
260
查看次数

标签 统计

3d ×1

c++ ×1

graphics ×1

opengl ×1