读取BMP BGR值,传递给glTexImage2D

时间:2013-02-23 17:13:06

标签: c++ opengl bmp

我已经编写了一个例程来读取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值。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

  

我设置GR_BGR并将其标记为未声明的标识符

然后你没有使用proper library for getting at OpenGL。 OpenGL的系统提供的头文件可能包含也可能不包含最新的函数和枚举器。因此,您需要使用其中一个库来获取OpenGL。您应该使用GL/gl.h而不是

一旦你正确访问OpenGL,剩下的就很简单了。使用GL_RGB作为pixel transfer format