2

glTexImage1D、glTexImage2D、および glTexImage3D 関数が内部形式 (すなわち、GL_RGBA8、GL_R32UI など) とピクセル形式を必要とするのはなぜですか? (GL_RGBA,GL_RED_INTEGER)

ピクセル形式は内部形式から簡単に解釈できるように思えます。これは単なる好奇心からではなく、私が作成した OpenGL テクスチャ オブジェクトとフレーム バッファ オブジェクト ラッパー (内部フォーマットからピクセル フォーマットを推定する) が、すべての内部フォーマットのピクセル フォーマットを適切に抽出できることを確認するためです。

4

1 に答える 1

6

ピクセル形式はテクスチャ データを提供する形式であり、内部形式は OpenGL が内部的に保存する方法です。OpenGL は自動的に変換を処理します。

glTexImage2Dのman ページには、内部形式のレイアウトの表のセットがあり、各形式がどのように変換されるかについても説明しています。

たとえば、ピクセル形式GL_RGと の内部形式があるGL_COMPRESSED_RGBA場合、GL は青チャネル全体を 0 として、アルファ チャネルを 1 として塗りつぶし、独自の内部圧縮を行います。

各要素は赤/緑のダブルです。GL はそれを浮動小数点に変換し、青の場合は 0、アルファの場合は 1 を付けて RGBA 要素にアセンブルします。次に、各コンポーネントに符号付きスケール ファクタ GL_c_SCALE が乗算され、符号付きバイアス GL_c_BIAS に加算され、[0,1] の範囲にクランプされます。

于 2013-02-27T19:58:03.633 に答える