我编写了一个例程,以将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。

10-08 01:06