glPixelTransferf 関数
glPixelTransferf 関数と glPixelTransferi 関数は、ピクセル転送モードを設定します。
構文
void WINAPI glPixelTransferf(
GLenum pname,
GLfloat param
);
パラメーター
-
pname
-
設定するピクセル転送パラメーターのシンボリック名。 次の表は、 glPixelTransfer で設定される各ピクセル転送パラメーターの有効な値の種類、初期値、および範囲を示しています。
Pname Type 初期値 有効範囲 GL_MAP_COLOR Boolean false true/false GL_MAP_STENCIL Boolean false true/false GL_INDEX_SHIFT 整数 (integer) 0 (8,8) GL_INDEX_OFFSET 整数 (integer) 0 (8,8) GL_RED_SCALE 整数 (integer) 1.0 (8,8) GL_GREEN_SCALE float 1.0 (8,8) GL_BLUE_SCALE float 1.0 (8,8) GL_ALPHA_SCALE float 1.0 (8,8) GL_DEPTH_SCALE float 1.0 (8,8) GL_RED_BIAS float 0.0 (8,8) GL_GREEN_BIAS float 0.0 (8,8) GL_BLUE_BIAS float 0.0 (8,8) GL_ALPHA_BIAS float 0.0 (8,8) GL_DEPTH_BIAS float 0.0 (8,8) -
param
-
pname が設定されている値。
戻り値
この関数は値を返しません。
注釈
glPixelTransfer 関数は、後続の glCopyPixels、glCopyTexImage1D、glCopyTexImage2D、glCopyTexSubImage1D、glCopyTexSubImage2D、glDrawPixels、glReadPixels、glTexImage1D、glTexImage2D、glTexSubImage1D、および glTexSubImage2D コマンドの操作に影響するピクセル転送モードを設定します。 ピクセル転送モードで指定されたアルゴリズムは、フレームバッファー (glReadPixels と glCopyPixels) から読み取られた後、またはクライアント メモリ (glDrawPixels、 glTexImage1D、 および glTexImage2D) からアンパックされた後、ピクセルで動作します。 ピクセル転送操作は、ピクセル操作の結果のコマンドに関係なく、同じ順序で、同じ方法で行われます。 ピクセル ストレージ モード (glPixelStore) は、クライアント メモリから読み取られるピクセルのアンパックと、クライアント メモリに書き戻されるピクセルのパッキングを制御します。
ピクセル転送操作では、 色、 色インデックス、 深度、ステンシルの 4 つの基本的なピクセルの種類が処理 されます。色ピクセルは、仮数と指数のサイズが指定されていない 4 つの浮動小数点値で構成され、0.0 がゼロの強度を表し、1.0 が完全な強度を表すようスケーリングされます。 カラー インデックスは、1 つの固定小数点値で構成され、二項点の右側に精度が指定されていません。 深度ピクセルは、0.0 が最小深度バッファー値を表し、1.0 が最大深度バッファー値を表すようスケーリングされた、未指定の仮数と指数サイズを持つ 1 つの浮動小数点値で構成されます。 最後に、ステンシル ピクセルは 1 つの固定小数点値で構成され、バイナリ ポイントの右側に精度が指定されていません。
4 種類の基本的なピクセルに対して実行されるピクセル転送操作は次のとおりです。
ピクセルの種類 | ピクセル転送操作 |
---|---|
Color | 4 つの色成分のそれぞれにスケール 係数が乗算され、バイアス係数に加算されます。 つまり、赤い成分はGL_RED_SCALE乗算され、GL_RED_BIASに追加されます。緑色のコンポーネントにGL_GREEN_SCALEを掛けてから、GL_GREEN_BIASに追加します。青い成分はGL_BLUE_SCALE乗算され、GL_BLUE_BIASに追加されます。アルファ成分にGL_ALPHA_SCALEを掛け、GL_ALPHA_BIASに加算します。 4 つの色成分すべてがスケーリングされ、バイアスされた後、それぞれが [0,1] の範囲にクランプされます。 すべてのカラー スケールとバイアス値は glPixelTransfer で指定されます。 GL_MAP_COLORが true の場合、各カラー コンポーネントは対応するカラーツーカラー マップのサイズでスケーリングされ、スケールされたコンポーネントによってインデックス付けされたそのマップの内容に置き換えられます。 つまり、赤のコンポーネントはGL_PIXEL_MAP_R_TO_R_SIZEでスケーリングされ、それ自体でインデックスが付GL_PIXEL_MAP_R_TO_Rの内容に置き換えられます。 緑色のコンポーネントは、GL_PIXEL_MAP_G_TO_G_SIZEによってスケーリングされ、それ自体でインデックスが付GL_PIXEL_MAP_G_TO_Gの内容に置き換えられます。 青いコンポーネントは、GL_PIXEL_MAP_B_TO_B_SIZEによってスケーリングされ、それ自体でインデックスが付GL_PIXEL_MAP_B_TO_Bの内容に置き換えられます。 アルファ コンポーネントは、GL_PIXEL_MAP_A_TO_A_SIZEによってスケーリングされ、それ自体でインデックスが付GL_PIXEL_MAP_A_TO_Aの内容に置き換えられます。 マップから取得されたすべてのコンポーネントは、範囲 [0,1] にクランプされます。 GL_MAP_COLORは glPixelTransfer で指定されます。 さまざまなマップの内容は glPixelMap で指定されます。 |
色のインデックス | 各色インデックスはGL_INDEX_SHIFTビットだけ左にシフトされ、固定小数点インデックスによって運ばれる分数ビット数を超えるビットはゼロで埋められます。 GL_INDEX_SHIFTが負の場合、シフトは右に、再びゼロが塗りつぶされます。 GL_INDEX_OFFSETがインデックスに追加されます。 GL_INDEX_SHIFTとGL_INDEX_OFFSETは glPixelTransfer で指定します。 この時点から、結果として得られるピクセルの必要な形式に応じて操作が分岐します。 結果のピクセルをカラー インデックス バッファーに書き込む場合、またはGL_COLOR_INDEX形式でクライアント メモリに読み取り戻される場合、ピクセルは引き続きインデックスとして扱われます。 GL_MAP_COLORが true の場合、各インデックスは 2 ^ n 1 でマスクされ、 n はGL_PIXEL_MAP_I_TO_I_SIZEされ、マスクされた値によってインデックスが付GL_PIXEL_MAP_I_TO_Iの内容に置き換えられます。 GL_MAP_COLORは glPixelTransfer で指定します。 インデックス マップの内容は glPixelMap で指定されます。 結果として得られるピクセルを RGBA カラー バッファーに書き込む場合、またはGL_COLOR_INDEX以外の形式でクライアント メモリに読み取り戻される場合、ピクセルはインデックスから色に変換され、4 つのマップ GL_PIXEL_MAP_I_TO_R GL_PIXEL_MAP_I_TO_Gを参照して色に変換されます。 GL_PIXEL_MAP_I_TO_B、およびGL_PIXEL_MAP_I_TO_A。 逆参照される前に、インデックスは 2 n 1 でマスクされます。ここで、n は赤いマップに対してGL_PIXEL_MAP_I_TO_R_SIZEされ、緑のマップのGL_PIXEL_MAP_I_TO_G_SIZE、青いマップのGL_PIXEL_MAP_I_TO_B_SIZE、アルファ マップのGL_PIXEL_MAP_I_TO_A_SIZEされます。 マップから取得されたすべてのコンポーネントは、範囲 [0,1] にクランプされます。 4 つのマップの内容は glPixelMap で指定されます。 |
奥行 | 各深さの値にGL_DEPTH_SCALE乗算し、GL_DEPTH_BIASに加算し、[0,1] の範囲にクランプします。 |
Stencil | 各インデックスは、色インデックスと同じようにビットGL_INDEX_SHIFTシフトされ、GL_INDEX_OFFSETに追加されます。 GL_MAP_STENCILが true の場合、各インデックスは 2n 1 でマスクされ、 n はGL_PIXEL_MAP_S_TO_S_SIZEされ、マスクされた値によってインデックスGL_PIXEL_MAP_S_TO_Sの内容に置き換えられます。 |
glPixelTransferf 関数を使用して、任意のピクセル転送パラメーターを設定できます。 パラメーターの型が Boolean の場合、0.0 は false を意味し、その他の値は true を意味します。 pname が整数パラメーターの場合、param は最も近い整数に丸められます。
同様に、 glPixelTransferi を使用して、任意のピクセル転送パラメーターを設定することもできます。 param が 0 の場合はブール値パラメーターが false に設定され、それ以外の場合は true に設定されます。 param パラメーターは、実値パラメーターに割り当てられる前に浮動小数点に変換されます。
glDrawPixels、glReadPixels、glCopyPixels、glTexImage1D、または glTexImage2D コマンドが表示リストに配置されている場合 (glNewList および glCallList を参照)、表示リストの実行時に有効なピクセル転送モードの設定は使用されます。 コマンドが表示リストにコンパイルされたときの設定とは異なる場合があります。
次の関数は 、glPixelTransfer に関連する情報を取得します。
glGet と引数 GL_MAP_COLOR
glGet と引数 GL_MAP_STENCIL
引数GL_INDEX_SHIFTを含む glGet
glGet と引数 GL_INDEX_OFFSET
glGet と引数 GL_RED_SCALE
glGet と引数 GL_RED_BIAS
glGet と引数 GL_GREEN_SCALE
glGet と引数 GL_GREEN_BIAS
glGet と引数 GL_BLUE_SCALE
glGet と引数 GL_BLUE_BIAS
glGet と引数 GL_ALPHA_SCALE
glGet と引数 GL_ALPHA_BIAS
glGet と引数 GL_DEPTH_SCALE
glGet と引数 GL_DEPTH_BIAS
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|
ライブラリ |
|
[DLL] |
|