glDrawPixels 関数

Gldrawpixels 関数は、フレームバッファーにピクセルのブロックを書き込みます。

構文

void WINAPI glDrawPixels(
         GLsizei width,
         GLsizei height,
         GLenum  format,
         GLenum  type,
   const GLvoid  *pixels
);

パラメーター

width

フレームバッファーに書き込まれるピクセル四角形の幅の寸法。

height

フレームバッファーに書き込まれるピクセル四角形の高さの次元。

format

ピクセルデータの形式。 使用できるシンボリック定数は次のとおりです。

意味
GL_COLOR_INDEX
各ピクセルは、1つの値 (色のインデックス) です。
  1. Gldrawpixels関数は、メモリデータ型に関係なく、各ピクセルを固定小数点形式に変換します。これは、バイナリポイントの右側のビット数を指定しません。 浮動小数点値は、true 固定小数点値に変換されます。 Gldrawpixels関数は、すべての分数ビットが0に設定された符号付き整数データと符号なし整数データを変換します。 この関数は、ビットマップデータを0.0 または1.0 に変換します。
  2. Gldrawpixels関数は、各固定小数点インデックスを GL_INDEX_SHIFT ビットだけ左にシフトし、GL_INDEX_OFFSET に追加します。 GL_INDEX_SHIFT が負の場合は、右にシフトされます。 どちらの場合も、0ビットの場合は、結果の中で特定できないビット位置を入力します。
  3. RGBA モードでは、 Gldrawpixels は、GL_PIXEL_MAP_I_TO_R、GL_PIXEL_MAP_I_TO_G、GL_PIXEL_MAP_I_TO_B、および GL_PIXEL_MAP_I_TO_A テーブルを使用して、結果のインデックスを rgba ピクセルに変換します。 カラーインデックスモードで GL_MAP_COLOR が true の場合、インデックスは、参照テーブル GL_PIXEL_MAP_I_TO_I で Gldrawpixels によって参照される値に置き換えられます。
  4. インデックスの参照置換が実行されたかどうかにかかわらず、インデックスの整数部分は 2b -1 で始まります。ここでbは、カラーインデックスバッファーのビット数です。
  5. 結果のインデックスまたは RGBA 色は、現在のラスター位置のz座標とテクスチャ座標を各ピクセルにアタッチし、x とyのウィンドウ座標をxのようn番目のフラグメントに割り当てて、フラグメントに変換されます。 = xr + n mod の
    y? = yr + n/width
    (xr , yr ) は、現在のラスター位置です。
  6. Gldrawpixels関数は、これらのピクセルフラグメントを、ラスターポイント、線、または多角形によって生成されるフラグメントと同様に扱います。 フラグメントをフレームバッファーに書き込む前に、テクスチャマッピング、フォグ、およびすべてのフラグメント操作が適用されます。
GL_STENCIL_INDEX
各ピクセルは、1つの値 (ステンシルインデックス) です。
  1. Gldrawpixels関数は、メモリデータ型に関係なく、バイナリポイントの右側に指定された数のビットを持つ固定小数点形式に変換します。 浮動小数点値は、true 固定小数点値に変換されます。 Gldrawpixels関数は、すべての分数ビットが0に設定された符号付き整数データと符号なし整数データを変換します。 ビットマップデータは0.0 または1.0 に変換されます。
  2. Gldrawpixels関数は、各固定小数点インデックスを GL_INDEX_SHIFT ビットで左にシフトし、GL_INDEX_OFFSET に追加します。 GL_INDEX_SHIFT が負の場合は、右にシフトされます。 どちらの場合も、0ビットの場合は、結果の中で特定できないビット位置を入力します。
  3. GL_MAP_STENCIL が true の場合、インデックスは、参照テーブル GL_PIXEL_MAP_S_TO_S で Gldrawpixels が参照する値に置き換えられます。
  4. インデックスの参照置換が実行されたかどうかに かかわらず、インデックスの整数部分は 2b -1 になります。ここで b はステンシルバッファーのビット数です。 その後、結果として得られたステンシルインデックスは、 n番目のインデックスが位置 xに書き込まれるようにステンシルバッファーに書き込まれます。 = xr + n mod の
    y? = yr + n/width
    (xr , yr ) は、現在のラスター位置です。 これらの書き込みに影響を与えるのは、ピクセル所有権テスト、シザーテスト、およびステンシル writemask だけです。
GL_DEPTH_COMPONENT
各ピクセルは、単一深度のコンポーネントです。
  1. Gldrawpixels関数は、浮動小数点データを、指定されていない有効桁数で内部浮動小数点形式に直接変換します。 符号付き整数データは、最も正の表現可能な整数値が1.0 にマップされ、最も負の表現可能な値が-1.0 にマップされるように、内部浮動小数点形式に線形的にマップされます。 符号なし整数データは同様にマップされます。最大の整数値は1.0 に、0は0.0 にマップされます。
  2. Gldrawpixels関数は、結果として得られる浮動小数点の深さの値を GL_DEPTH_SCALE で乗算し、GL_DEPTH_BIAS に追加します。 結果は [0, 1] の範囲に固定されます。
  3. Gldrawpixels関数は、現在のラスター位置の色または色のインデックスとテクスチャの座標を各ピクセルにアタッチし、x とyのウィンドウ座標をxのようn番目のフラグメントに代入することによって、結果の深度コンポーネントをフラグメントに変換します。 = xr + n mod の
    y? = yr + n/width
    ( xr ,yr ) は、現在のラスター位置です。
  4. これらのピクセルフラグメントは、ラスターポイント、線、または多角形によって生成されるフラグメントと同じように扱われます。 Gldrawpixels関数は、フラグメントをフレームバッファーに書き込む前に、テクスチャマッピング、フォグ、およびすべてのフラグメント操作を適用します。
GL_RGBA
各ピクセルは、赤、緑、青、アルファの順に4つのコンポーネントで構成されたグループです。
  1. Gldrawpixels関数は、浮動小数点値を、指定されていない有効桁数で内部浮動小数点形式に直接変換します。 符号付き整数値は、最も正の表現可能な整数値が1.0 にマップされ、最も負の表現可能な値が-1.0 にマップされるように、内部浮動小数点形式に線形的にマップされます。 符号なし整数データは同様にマップされます。最大の整数値は1.0 に、0は0.0 にマップされます。
  2. Gldrawpixels関数は、結果として得られた浮動小数点色の値を GL_c_SCALE で乗算し、それらを GL_c_BIAS に追加します。 cは、それぞれの色コンポーネントに対して赤、緑、青、アルファです。 結果は [0, 1] の範囲に固定されます。
  3. GL_MAP_COLOR が true の場合、 Gldrawpixels は、各カラーコンポーネントを参照テーブル GL_PIXEL_MAP_c_TO_c のサイズでスケーリングし、コンポーネントをそのテーブル内で参照する値で置き換えます。 c はそれぞれ R、G、B、または A です。
  4. Gldrawpixels関数は、現在のラスター位置のz座標とテクスチャ座標を各ピクセルにアタッチすることによって、結果の RGBA 色をフラグメントに変換し、x とyのウィンドウ座標をxのようなn番目のフラグメントに割り当てます。 = xr + n mod の
    y? = yr + n/幅
    (xr ,yr ) は、現在のラスター位置です。
  5. これらのピクセルフラグメントは、ラスターポイント、線、または多角形によって生成されるフラグメントと同じように扱われます。 Gldrawpixels関数は、フラグメントをフレームバッファーに書き込む前に、テクスチャマッピング、フォグ、およびすべてのフラグメント操作を適用します。
GL_RED
各ピクセルは、1つの赤のコンポーネントです。
Gldrawpixels関数は、rgba ピクセルの赤の部分と同じように、このコンポーネントを内部浮動小数点形式に変換し、その後、緑色と blue を0.0 に設定し、アルファを1.0 に設定して、rgba ピクセルに変換します。 この変換の後、ピクセルは RGBA ピクセルとして読み取られた場合と同じように扱われます。
GL_GREEN
各ピクセルは、1つの緑のコンポーネントです。
Gldrawpixels関数は、rgba ピクセルの緑の部分と同じように、このコンポーネントを内部浮動小数点形式に変換し、その後、赤と青を0.0 に設定し、アルファを1.0 に設定して、rgba ピクセルに変換します。 この変換の後、ピクセルは RGBA ピクセルとして読み取られた場合と同じように扱われます。
GL_BLUE
各ピクセルは、1つの青のコンポーネントです。
Gldrawpixels関数は、rgba ピクセルの青いコンポーネントと同じように、このコンポーネントを内部浮動小数点形式に変換してから、赤と緑が0.0 に設定され、アルファが1.0 に設定された rgba ピクセルに変換します。 この変換の後、ピクセルは RGBA ピクセルとして読み取られた場合と同じように扱われます。
GL_ALPHA
各ピクセルは、1つのアルファ成分です。
Gldrawpixels関数は、rgba ピクセルのアルファコンポーネントと同じように、このコンポーネントを内部浮動小数点形式に変換し、赤、緑、および青を0.0 に設定して rgba ピクセルに変換します。 この変換の後、ピクセルは RGBA ピクセルとして読み取られた場合と同じように扱われます。
GL_RGB
各ピクセルは、赤、緑、青の3つのコンポーネントで構成されています。 Gldrawpixels関数は、RGBA ピクセルの赤、緑、および青のコンポーネントと同じように、各コンポーネントを内部浮動小数点形式に変換します。 カラー トリプルは、アルファが 1.0 に設定された RGBA ピクセルに変換されます。 この変換後、ピクセルは RGBA ピクセルとして読み取った場合と同様に処理されます。
GL_LUMINANCE
各ピクセルは、単一の輝度コンポーネントです。
glDrawPixels関数は、RGBA ピクセルの赤のコンポーネントと同じ方法でこのコンポーネントを内部浮動小数点形式に変換し、赤、緑、青を変換された輝度値に設定し、アルファを 1.0 に設定した RGBA ピクセルに変換します。 この変換後、ピクセルは RGBA ピクセルとして読み取った場合と同様に処理されます。
GL_LUMINANCE_ALPHA
各ピクセルは、輝度、アルファの 2 つのコンポーネントのグループです。
glDrawPixels関数は、RGBA ピクセルの赤い要素と同じ方法で 2 つのコンポーネントを内部浮動小数点形式に変換し、変換された輝度値に設定された赤、緑、青の RGBA ピクセルに変換し、アルファを変換されたアルファ値に設定します。 この変換後、ピクセルは RGBA ピクセルとして読み取った場合と同様に処理されます。
GL_BGR_EXT
各ピクセルは、青、緑、赤の 3 つのコンポーネントのグループです。
GL_BGR_EXT、デバイスに依存しないビットマップ (DIB) のメモリ レイアウトWindows一致する形式が提供されます。 したがって、アプリケーションでは、関数呼び出しと OpenGL ピクセル関数呼び出しWindows同じデータを使用できます。
GL_BGRA_EXT
各ピクセルは、青、緑、赤、アルファの 4 つのコンポーネントのグループです。
GL_BGRA_EXT、デバイスに依存しないビットマップ (DIB) のメモリ Windowsに一致する形式が提供されます。 したがって、アプリケーションでは、関数呼び出しと OpenGL ピクセル関数呼び出しWindows同じデータを使用できます。

type

ピクセル のデータ 。 受け入れられるシンボリック定数とその意味を次に示します。

意味
GL _ UNSIGNED _ BYTE
符号なし 8 ビット整数
GL _ BYTE
符号付き 8 ビット整数
GL _ BITMAP
符号なし 8 ビット整数の単一ビット
GL _ UNSIGNED _ SHORT
符号なし 16 ビット整数
GL _ SHORT
符号付き 16 ビット整数
GL _ UNSIGNED _ INT
符号なし 32 ビット整数
GL _ INT
32-bit integer
GL _ FLOAT
単精度浮動小数点数

ピクセル

ピクセル データへのポインター。

戻り値

この関数は値を返しません。

エラー コード

次のエラー コードは 、glGetError 関数で取得 できます。

Name 意味
GL _ INVALID _ VALUE
または高**さが 負の値でした。
GL _ INVALID _ ENUM
format または type は、 受け入れ可能な値ではありませんでした。
GL _ INVALID _ OPERATION
形式 は GL _ RED、GL _ GREEN、GL _ BLUE、GL _ ALPHA、GL _ _ RGB、GL RGBA、GL _ BGR _ EXT、GL _ BGRA _ EXT、GL _ RGBANCE、または GL _ RGBANCE ALPHA で _ 、OpenGL はカラーインデックス モードでした。
GL _ INVALID _ ENUM
が GL _ BITMAP で 、形式 が GL COLOR INDEX または _ GL _ _ ステンシル _ インデックスではありませんでした。
GL _ INVALID _ OPERATION
の形式 は GL _ ステン _ シル インデックスで、ステンシル バッファーは使用されません。
GL _ INVALID _ OPERATION
関数は 、glBegin の呼び出しと glEnd への対応する呼び出しの間で 呼び出されました

注釈

glDrawPixels 関数 は、メモリからピクセル データを読み取り、現在のラスター位置を基準としてフレームバッファーに書き込みます。 glRasterPos を使用して現在のラスター位置を設定し 、glGetと引数 GL CURRENT RASTER POSITION を使用してラスター _ _ _ の位置を照会します。

いくつかのパラメーターは、メモリ内のピクセル データのエンコードを定義し、フレームバッファに配置される前のピクセル データの処理を制御します。 これらのパラメーターには、glPixelStore、glPixelTransfer、glPixelMap、glPixelZoom の 4 つの関数が 設定されています このトピックでは、これら 4 つの関数で指定されたパラメーターの多く (すべてではない) の glDrawPixels に対する影響について説明します。

データは、型に応じて、符号付きバイトまたは符号なしバイト、符号付きまたは符号なし short、符号付き整数または符号なし整数、または単精度浮動小数点値のシーケンスとしてピクセルから読み取 まれます。 これらの各バイト、short、整数、または浮動小数点値は、形式に応じて、1 つの色または深度の要素、または 1 つのインデックスとして解釈 されます。 インデックスは常に個別に処理されます。 色のコンポーネントは、 形式に基づいて、1、2、3、または 4 の値のグループとして扱 います。 個々のインデックスとコンポーネントのグループはどちらもピクセルと呼ばれます。 型 GL BITMAP の場合、データは符号なしバイトである必要があります。また、形式は GL COLOR INDEX または _ _ GL _ ステンシル インデックスである _ 必要 _ があります。 各符号なしバイトは 8 個の 1 ビット ピクセルとして扱われるので、GL UNPACK LSB FIRST によってビット順序が決定されます _ _ _ (glPixelStoreに関するページを参照)。

さピクセル 単位 の幅 は、位置ピクセル から始まるメモリから読み取 されます。 既定では、これらのピクセルは隣接するメモリ位置から取得されます。ただし、すべての幅ピクセルが読み取られた後、読み取りポインターが次の 4 バイト境界に進む点が除いてです。 glPixelStore 関数は、引数 GL UNPACK ALIGNMENT との 4 バイト行のアラインメントを指定し _ _ 、1、2、4、または 8 バイトに設定できます。 他のピクセル ストア パラメーターでは、最初のピクセルが読み取る前とすべての幅ピクセルが読み取った後の両方で、異なる読み取りポインターの 進み方 が指定されます。 glPixelStore 関数は、glPixelTransferglPixelMapで指定された複数のパラメーターの値に基づいて、メモリから 読み取る各高さピクセルで同じように動作します。 これらの操作の詳細と、ピクセルが描画されるターゲット バッファーは、 形式 で指定されたピクセルの形式に固有 です

これまでに説明したラスター化では、ピクセルズーム係数が 1.0 と想定されています。 glPixelZoomを使用して x および y ピクセルのズーム係数を変更すると、ピクセルは次のようにフラグメントに変換されます。 (xr,yr) が現在のラスター位置であり、特定のピクセルがピクセル四角形の n 番目の列と m 行にある場合、中心が角を持つ四角形内にあるピクセルに対してフラグメントが生成されます

(xr + ズーム?n 、yr + zoomy m)

(xr + ズーム? (n + 1)、y r + ズームy (m + 1))

どこに ズームしますか?は GL _ ZOOM X の _ 値 、zoomy は GL ZOOM _ Y の _ 値です。

次の関数は 、glDrawPixels に関連する情報を取得します

glGet と 引数 GL _ CURRENT RASTER _ _ POSITION

glGet と 引数 GL _ CURRENT RASTER POSITION _ _ _ VALID

要件

要件
サポートされている最小のクライアント
Windows 2000 Professional[ デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Gl.h
ライブラリ
Opengl32.lib
[DLL]
Opengl32.dll

こちらもご覧ください

glAlphaFunc

glBegin

glBlendFunc

glCopyPixels

glDepthFunc

glEnd

glGet

glLogicOp

Glピクセルマップ

Glピクセルストア

Glピクセル転送

Glピクセルズーム

glRasterPos

glReadPixels

glScissor

glStencilFunc