读取BMP BGR值,传递到glTexImage2D

reading BMP BGR values, passing to glTexImage2D

本文关键字:glTexImage2D BMP BGR 读取      更新时间:2023-10-16

我已经编写了一个例程,将BMP文件中的所有像素值读取到一个数组中,我想将该数组提供给openGL的glTexImage2D,以将其转换为纹理。通过这样做,我意识到BMP文件中像素的实际格式是BGR,而不是RGB,所以我的数组包含蓝色、绿色和红色。因此,与原始位图相比,我的最终纹理的蓝色和红色通道被交换了。

我这样称呼它:

glTexImage2D(GL_TEXTURE_2D, 0, 3, imgdata->width, imgdata->height, 0, GL_RGB, GL_UNSIGNED_BYTE, imgdata->pixdata);

对于这种情况/我提出的错误论点,有什么解决办法吗?我现在能找到的唯一解决方案是使用循环手动交换数组中的RB值。

为什么不将glTexImage2D的格式更改为GL_BGR。

我设置了GR_BGR,它被标记为未声明的标识符

那么你没有使用一个合适的库来获取OpenGL。OpenGL系统提供的标头可能包含也可能不包含最新的函数和枚举器。因此,您需要使用其中一个库来获取OpenGL。您应该使用这些而不是GL/gl.h

一旦正确访问OpenGL,剩下的就很简单了。使用GL_RGB作为像素传输格式。