[英]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
標志),讀取位圖尺寸,然后讀取原始像素數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.