14:45:12 2012年2月22日
今天寫(xiě)二維紋理顯示,主要是用CDIB::LoadBmp()讀取一個(gè)bmp位圖文件,然后生成二維紋理并顯示出來(lái),但我發(fā)現(xiàn)顯示出來(lái)的紋理的顏色和原始圖片的顏色不同,明明是張白底紅條的圖片,卻渲染成了白底藍(lán)條的,在網(wǎng)上搜了搜,發(fā)現(xiàn)因?yàn)锽MP格式是按Blue,Green,Red順序儲(chǔ)存圖像數(shù)據(jù)的,這與OpenGL中正好相反。GL_BGR_EXT就是完成兩者之間的轉(zhuǎn)換的。
解決辦法#include <gl\glext.h>
這是因?yàn)镚L_BGR_EXT是定義在這個(gè)頭文件里的
glTexImage2D(GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits);
問(wèn)題就解決了。