0

全て、

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 に変換していますが、それはすべて簡単です。

誰もがより良い、よりクリーンなスニペットを持っていますか?

4

1 に答える 1

1

LoadImage()リソースコンパイラを使用して実行可能ファイルに埋め込まれているビットマップのみをロードできます。ファイルシステムから外部ビットマップをロードすることはできません。幸いなことに、ビットマップファイルは自分で読むのが本当に簡単です。ファイル形式の説明については、ウィキペディアを参照してください。

他のファイルと同じようにファイルを開き(重要:バイナリモードで開きます。つまり、C ++を使用する"rb"オプションfopenまたはフラグを使用して開きます)、ビットマップディメンションを読み込み、生のピクセルデータを読み込みます。ios::binaryifstream

于 2008-11-29T21:35:47.223 に答える