所有人,

我努力装载了一个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);

发生了什么是叫LoadImage似乎是返回的不确定值(NULL?我不能够弄清楚,如果它实际上装载的bmp或不-有点困惑).

在那一刻,我是转换bmp原则,它的所有容易的。

任何人有任何更好和更清洁的片断?

有帮助吗?

解决方案

LoadImage()只能加载嵌入与资源编译器可执行文件的位图 - 它不能从文件系统加载外部的位图。幸运的是,位图文件是非常简单的阅读自己。请参阅维基百科,在文件格式的描述。

只要打开该文件就像你使用任何其他文件(重要:以二进制方式,即使用"rb"或使用C ++ fopenios::binary标志ifstream选项打开它),请阅读该位图尺寸,并读取在原始像素数据。

其他提示

它的 一个共同的任务,这就是为什么猫头鹰大神显灵,除其他外,给你的功能。

读一位是一个简单的问题,特别是如果只有一个深/位来考虑。

也见 这个问题.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top