0

BMP ファイル内のすべてのピクセル値を配列に読み取り、openGL の glTexImage2D に供給してテクスチャに変換するルーチンを作成しました。これを行うと、BMP ファイル内のピクセルの実際の形式は RGB ではなく BGR であることがわかりました。そのため、配列には青、緑、赤が含まれています。その結果、最終的なテクスチャでは、元のビットマップと比較して青と赤のチャンネルが入れ替わっています。

これは私がそれを呼び出す方法です:

glTexImage2D(GL_TEXTURE_2D, 0, 3, imgdata->width, imgdata->height, 0, GL_RGB, GL_UNSIGNED_BYTE, imgdata->pixdata);

この状況/間違った引数の回避策はありますか? 私が今見つけることができる唯一の解決策は、ループを使用して配列内の RB 値を手動で交換することです。

4

2 に答える 2

3

glTexImage2DのフォーマットをGL_BGRに変更してみませんか。

于 2013-02-23T17:28:05.683 に答える
1

GR_BGR を設定すると、宣言されていない識別子としてマークされます

次に、 OpenGL を取得するための適切なライブラリを使用していません。OpenGL のシステム提供のヘッダーには、最新の関数と列挙子が含まれている場合と含まれていない場合があります。代わりに、これらのライブラリのいずれかを使用して OpenGL を取得する必要があります。の代わりにこれらを使用する必要がありGL/gl.hます。

OpenGL に適切にアクセスできるようになれば、あとは簡単です。ピクセル転送フォーマットとして使用GL_RGBします。

于 2013-02-23T23:45:05.253 に答える