国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
加載紋理

大家在OpenGL中一般是用aux庫(kù)的auxDIBImageLoad()函數(shù)來(lái)加載BMP格式的圖片來(lái)作為紋理,這個(gè)確實(shí)是比較簡(jiǎn)單易用,但aux庫(kù)的性能不佳,經(jīng)常會(huì)出問(wèn)題,穩(wěn)定性較差。所以一般最好不要用aux庫(kù),可以用glut庫(kù),但glut庫(kù)沒(méi)有紋理加載函數(shù)。而有些程序是直接讀取BMP格式來(lái)獲得圖像數(shù)據(jù),從而生成紋理的,這種方法雖然很強(qiáng)大,但比較復(fù)雜,需要了解BMP的格式,對(duì)初學(xué)者比較困難。而下面的一段程序是用windowsAPI函數(shù)LoadImage()來(lái)實(shí)現(xiàn)這個(gè)功能,這種實(shí)現(xiàn)方法很簡(jiǎn)單,可以說(shuō)比auxDIBImageLoad()函數(shù)復(fù)雜不了多少。

    首先,加上頭文件:

    #include <gl\glext.h>

    這是因?yàn)楹竺娴?/span>GL_BGR_EXT是定義在這個(gè)頭文件里的,因?yàn)?/span>BMP格式是按Blue,Green,Red順序儲(chǔ)存圖像數(shù)據(jù)的,這與OpenGL中正好相反。GL_BGR_EXT就是完成兩者之間的轉(zhuǎn)換的。

    下面就是不用AUX庫(kù)來(lái)加載BMP圖片作為紋理的函數(shù):

bool LoadTexture(LPTSTR szFileName, GLuint &texid)     // Creates Texture From A Bitmap File
{
 HBITMAP hBMP;             // Handle Of The Bitmap
 BITMAP BMP;             // Bitmap Structure

 glGenTextures(1, &texid);          // Create The Texture
 hBMP=(HBITMAP)LoadImage(GetModuleHandle(NULL), szFileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );

 if (!hBMP)              // Does The Bitmap Exist?
  return FALSE;            // If Not Return False

 GetObject(hBMP, sizeof(BMP), &BMP);        // Get The Object
                 // hBMP:        Handle To Graphics Object
                 // sizeof(BMP): Size Of Buffer For Object Information
                 // &BMP:        Buffer For Object Information

 glPixelStorei(GL_UNPACK_ALIGNMENT, 4);       // Pixel Storage Mode (Word Alignment / 4 Bytes)

 // Typical Texture Generation Using Data From The Bitmap
 glBindTexture(GL_TEXTURE_2D, texid);        // Bind To The Texture ID
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // Linear Min Filter
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Linear Mag Filter
 glTexImage2D(GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits);

 DeleteObject(hBMP);            // Delete The Object

 return TRUE;             // Loading Was Successful
}

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
NeHe OpenGL第二十課:蒙板
關(guān)于CBitmap,LoadBitmap 的使用
OpenGL 紋理入門
NeHe OpenGL第四十三課:FreeType庫(kù)
Bitmap與IplImage之間的轉(zhuǎn)換
CBitmap和HBITMAP的區(qū)別及相互轉(zhuǎn)換方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服