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