我已经写了一个例程,以读取从BMP文件内的所有像素值到一个数组,我想喂给openGL的glTexImage2D把它变成一个纹理。这样做,我意识到BMP文件内像素的实际格式是BGR而不是RGB,所以我的数组包含蓝色,绿色和红色。因此,与最初的位图相比,我的最终纹理交换了蓝色和红色通道。阅读BMP的BGR值,传递给glTexImage2D
这是我怎么称呼它:
glTexImage2D(GL_TEXTURE_2D, 0, 3, imgdata->width, imgdata->height, 0, GL_RGB, GL_UNSIGNED_BYTE, imgdata->pixdata);
任何解决方法,我通过这个局面/错误的参数?我现在唯一能找到的解决方案是使用循环手动交换数组内的RB值。
我在OpenGL的文档中看不到这样的格式 – Tsaras 2013-02-23 18:28:27
指定像素数据的格式。 以下符号值被接受: GL_RED, GL_RG, GL_RGB, GL_BGR, GL_RGBA,和 GL_BGRA。 – 2013-02-23 18:29:02
我在你提供的链接中看到它,但是当我从红色书中读取时,它不在列表中。事实上,我设置了GR_BGR,它被标记为未声明的标识符 – Tsaras 2013-02-23 18:30:03