2011-11-22 35 views
0

これについて既にa questionがあることは知っていますが、コードで解決策を提示していません。GLubyte配列としてビットマップをどのように読み込みますか?

私はこの機能を使用してGLアプリケーションにビットマップイメージをロードしようとしている:

void glBitmap(GLsizei width, 
       GLsizei height, 
       GLfloat xorig, 
       GLfloat yorig, 
       GLfloat xmove, 
       GLfloat ymove, 
       const GLubyte * bitmap); 

誰かが私に与えられたファイル名GLubyte*を返す関数を与えることができますか?私は動作中のアルゴリズムのためにウェブ全体を見てきましたが、動作するようには思えません。

+0

@Mat http:// pastebin。com/sUz0e5h4それは非常にきれいではなく、いくつかの調整が必要ですが、私はまだそれが動作しない理由を見ることができません。 –

+0

あなたの質問に関連するコードを投稿してください(そのリンクではありません)ので、人々はそれを見て、何が間違っているか/何が良いかを教えてくれるでしょう。 _what_が動作しない/ _how_失敗したことを記述します。 – Mat

+0

@Matポイントは、私は何をすべきか分かりません。手伝って頂けますか? –

答えて

0

まず、glBitmapの内容を理解する必要があります。glBitmapは、の図の機能です。与えられたデータの各ビット(したがって、ビットマップ)を2次元配列として解釈し、現在のラスタ位置(glRasterPosで設定)に対して相対的に見て、これらのピクセルを現在設定されているラスタカラー(glRasterColor)に設定します。ビットマップ内に設定されます。各GLubyteには8ビットが含まれているので、各バイトは8ピクセル幅をカバーします(endianessはglPixelStoreを使用して設定されます)。

ファイルからビットマップを読み取るためのA。 AFAIKには、(各ピクセルのチャンネルがある範囲の値をとることができる)チャンネルを持つピックスマップとは対照的に、広範なビットマップフォーマットが1つしかありません。その形式はPBMです:http://en.wikipedia.org/wiki/Netpbm_format

はWikipediaのページから情報を考えると、データを保持する構造に(必要な機能がfopenfreadfcloseある)PBMファイルを開き、読み込み機能を書くことは簡単です。次に、その構造を使ってデータをglBitmapに送ることができます。

しかし、ビットマップは、バイナリ値の画像、つまり黒と白、灰色ではなく、色を表現するものではないことに注意してください。

あなたの考えは「ビットマップを読み込んでいます」でした。私はすでに、glBitmapは、あなたがそれを与えるデータをすぐに描画すると言いました。だから私はあなたが実際に探しているものはテクスチャとテクスチャローダーへの画像ファイルだと思います。

1

glBitmapを使用してイメージを表示する際の問題は、ファイルからイメージをロードし、データをカラーインデックス配列として解釈する必要があることです。可能なすべてのライブラリとサンプルはイメージデータをRGB(またはRGBA)として解釈し、glColorTableを使用してカラーテーブルを設定する必要があるため、glBitmapを使用してイメージをロードする人は誰もいないので、glBitmapをデータとともに使用する方法の実際の例はありませんファイルからロードされます。ところで

、これはglBitmap reference pageからのものである:

ビットマップ画像は幅と高さは、そのコマンドの幅と高さ 引数に対応して、glDrawPixels コマンド用の画像データと同様に解釈され、そしてタイプをGL_BITMAPに設定し、フォーマット をGL_COLOR_INDEXに設定します。

問題を解決し、glDrawPixelsやテクスチャを使用してファイルから画像を表示してください。

This pageには、glBitmapを使用してイメージを表示する方法の例が含まれていますが、ファイルからは表示されません。

関連する問題