質問

すべて、

(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 フラグ)、ビットマップディメンションの読み取り、および生のピクセルデータの読み取り。

他のヒント

それは 一般的なタスクです。だからこそ、glauxはそのための機能を提供します。

ビットマップの読み取りは、特に考慮する深さ/ bppが1つしかない場合は簡単なことです。

この質問

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top