簡體   English   中英

如何將bmp加載到GLubyte數組中?

[英]How to load bmp into GLubyte array?

所有,

我正在嘗試將bmp文件加載到GLubyte數組中(不使用aux)。

真令人難以置信的是,我原本認為這是一件微不足道的工作,卻浪費了我數小時的時間。

在Google上似乎找不到任何內容!

這是我一起砍的東西,但效果不佳:

// load texture

GLubyte *customTexture;

string fileName("C:\\Development\\Visual Studio 2008\\Projects\\OpenGL_Test\\Crate.bmp");

// Use LoadImage() to get the image loaded into a DIBSection
HBITMAP hBitmap = (HBITMAP)LoadImage( NULL, (LPCTSTR)const_cast<char*>(fileName.c_str()), IMAGE_BITMAP, 0, 0, 
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );

customTexture = new GLubyte[3*256*256]; // size should be the size of the .bmp file

GetBitmapBits(hBitmap, 3*256*256, (LPVOID) customTexture);

GetBitmapDimensionEx(hBitmap,&szBitmap);

發生的情況是對LoadImage的調用似乎返回未定義的值(NULL?我無法弄清楚它是否實際上正在加載bmp-有點困惑)。

目前,我正在將bmp轉換為raw,這很容易。

有人有更好更好的代碼段嗎?

LoadImage()只能使用資源編譯器加載嵌入到可執行文件中的位圖-不能從文件系統加載外部位圖。 幸運的是,位圖文件非常易於閱讀。 有關文件格式的說明,請參見Wikipedia

只需像打開任何其他文件一樣打開文件( 重要的是 :以二進制模式打開它,即使用fopen使用"rb"選項或使用C ++ ifstream使用ios::binary標志),讀取位圖尺寸,然后讀取原始像素數據。

一項常見的任務,這就是為什么glaux等可以為您提供功能的原因。

讀取位圖是一件小事,特別是如果只考慮一個深度/ bpp時。

也看到這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM