14:45:12 2012年2月22日
今天写二维纹理显示,主要是用CDIB::LoadBmp()读取一个bmp位图文件,然后生成二维纹理并显示出来,但我发现显示出来的纹理的颜色和原始图片的颜色不同,明明是张白底红条的图片,却渲染成了白底蓝条的,在网上搜了搜,发现因为BMP格式是按Blue,Green,Red顺序储存图像数据的,这与OpenGL中正好相反。GL_BGR_EXT就是完成两者之间的转换的。
解决办法#include <gl\glext.h>
这是因为GL_BGR_EXT是定义在这个头文件里的
glTexImage2D(GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits);
问题就解决了。