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);
問題就解決了。