質問
すべて、
(auxを使用せずに)bmpファイルをGLubyte配列にロードしようとしています。
つまらない仕事だと思っていたことが、何時間もの時間を無駄にすることは信じられません。
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 をご覧ください。
他のファイルと同じようにファイルを開きます(重要:バイナリモードで開きます。つまり、&quot; rb&quot;
オプションで fopen
またはC ++ ifstream
を使用した ios :: binary
フラグ)、ビットマップディメンションの読み取り、および生のピクセルデータの読み取り。
他のヒント
所属していません StackOverflow