C++ 如何将bmp加载到GLubyte数组中?

C++ 如何将bmp加载到GLubyte数组中?,c++,opengl,glut,C++,Opengl,Glut,全部, 我正在尝试将bmp文件加载到GLubyte数组中(不使用aux) 令人难以置信的是,我原本以为是一项琐碎的任务却占用了我好几个小时的时间 在谷歌上似乎找不到任何东西 这是我拼凑的东西,但不太管用: // load texture GLubyte *customTexture; string fileName("C:\\Development\\Visual Studio 2008\\Projects\\OpenGL_Test\\Crate.bmp"); // Use LoadIma

全部,

我正在尝试将bmp文件加载到GLubyte数组中(不使用aux)

令人难以置信的是,我原本以为是一项琐碎的任务却占用了我好几个小时的时间

在谷歌上似乎找不到任何东西

这是我拼凑的东西,但不太管用:

// 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);
//加载纹理
GLubyte*自定义纹理;
字符串文件名(“C:\\Development\\Visual Studio 2008\\Projects\\OpenGL\u Test\\Crate.bmp”);
//使用LoadImage()将图像加载到分区中
HBITMAP HBITMAP=(HBITMAP)LoadImage(NULL,(LPCTSTR)const_cast(fileName.c_str()),IMAGE_位图,0,0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
customTexture=新GLubyte[3*256*256];//大小应为.bmp文件的大小
GetBitmapBits(hBitmap,3*256*256,(LPVOID)customTexture);
GetBitmapDimensionEx(hBitmap和szBitmap);
发生的情况是,对LoadImage的调用似乎返回了未定义的值(NULL?我无法确定它是否正在加载bmp-有点困惑)

目前我正在将BMP转换为原材料,这一切都很容易

任何人都有更好更干净的代码段吗?

LoadImage()
只能使用资源编译器加载嵌入到可执行文件中的位图-它无法从文件系统加载外部位图。幸运的是,位图文件很容易自己读取。有关文件格式的说明,请参见


打开文件,就像你将要用任何其他文件一样(<强>重要/强:用二进制模式打开,即用<代码>”RB“<代码>选项使用<代码> fOpen< /COD>或<代码> iS::Boo2/<代码>标志,使用C++ <代码> IFSturi<代码>,在位图维度中读取,并读取原始像素数据。

感谢您在LoadImage上的评论-我知道如何使用ifstream打开文件-我有点希望能找到一些片段,而不是去那里,从头开始了解如何逐字节读取(我甚至认为我已经像N年前一样使用smt),因为这听起来像是一项普通任务