glFeedbackBuffer 関数

glFeedbackBuffer 関数は、フィードバック モードを制御します。

構文

void WINAPI glFeedbackBuffer(
   GLsizei size,
   GLenum  type,
   GLfloat *buffer
);

パラメーター

size

バッファーに書き込むことができる値の最大数。

type

各頂点に対して返される情報を表すシンボリック定数。 次のシンボリック定数を使用できます。GL_2D、GL_3D、GL_3D_COLOR、GL_3D_COLOR_TEXTURE、GL_4D_COLOR_TEXTURE。

バッファー

フィードバック データを返します。

戻り値

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

エラー コード

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

名前 意味
GL_INVALID_ENUM
type が受け入れられた値ではありません。
GL_INVALID_ENUM
size が負の値でした。
GL_INVALID_OPERATION
レンダリング モードがGL_FEEDBACKされている間に glFeedbackBuffer が呼び出されたか、glFeedbackBuffer が少なくとも 1 回呼び出される前に、引数 GL_FEEDBACK を指定して glRenderMode が呼び出されました。
GL_INVALID_OPERATION
この関数は、 glBegin の呼び出しと glEnd の対応する呼び出しの間で呼び出されました。

解説

glFeedbackBuffer 関数はフィードバックを制御します。 選択などのフィードバックは OpenGL モードです。 モードは、GL_FEEDBACKを使用して glRenderMode を呼び出すことによって選択されます。 OpenGL がフィードバック モードの場合、ラスター化によってピクセルは生成されません。 代わりに、ラスター化されたプリミティブに関する情報は、OpenGL を使用してアプリケーションにフィードバックされます。

glFeedbackBuffer 関数には、次の 3 つの引数があります。

  • buffer は、フィードバック情報が配置される浮動小数点値の配列へのポインターです。
  • size は配列のサイズを示します。
  • type は、各頂点にフィードバックされる情報を記述するシンボリック定数です。

フィードバック モードが有効になる前 に glFeedbackBuffer を 発行する必要があります (引数 GL_FEEDBACK を指定して glRenderMode を呼び出します)。 フィードバック バッファーを確立せずにGL_FEEDBACKを設定するか、OpenGL がフィードバック モードの間 に glFeedbackBuffer を呼び出すことはエラーです。

GL_FEEDBACK以外のパラメーター値を指定して glRenderMode を呼び出して、OpenGL をフィードバック モードから除外します。 OpenGL がフィードバック モードのときにこれを行うと、 glRenderMode はフィードバック配列に配置されたエントリの数を返します。 戻り値が size を超えることはありません。 フィードバック データに バッファーで使用できるスペースを超えるスペースが必要な場合、 glRenderMode は負の値を返します。

フィードバック モードでは、ラスター化される各プリミティブによって、フィードバック配列にコピーされる値のブロックが生成されます。 そうすると、エントリの数が最大値を超える場合、 glFeedbackBuffer は配列を埋めるようにブロックを部分的に書き込み (部屋がまったく残っている場合)、オーバーフロー フラグを設定します。 各ブロックは、プリミティブ型を示すコードで始まり、その後にプリミティブの頂点と関連データを記述する値が続きます。 glFeedbackBuffer 関数は、ビットマップとピクセル四角形のエントリも書き込みます。 多角形カリングと glPolygonMode によるポリゴンの解釈が行われた後にフィードバックが発生するため、カリングされたポリゴンはフィードバック バッファーに返されません。 また、OpenGL 実装でこの分解を実行してポリゴンがレンダリングされる場合、3 つ以上のエッジを持つポリゴンが三角形に分割された後に発生する可能性があります。

glPassThrough を使用して、フィードバック バッファーにマーカーを挿入できます。

フィードバック バッファーに書き込まれた値のブロックの文法を次に示します。 各プリミティブは、一意の識別値とそれに続く頂点の数で示されます。 多角形エントリには、後続する頂点の数を示す整数値が含まれます。 頂点は、 によって決定される浮動小数点値の数としてフィードバックされます。 色は RGBA モードでは 4 つの値、カラー インデックス モードでは 1 つの値としてフィードバックされます。

feedbackList < feedbackItem feedbackList | feedbackItem

feedbackItem < point | lineSegment | polygon | bitmap | pixelRectangle | passThru

頂点GL_POINT_TOKEN点<

lineSegment < GL_LINE_TOKEN頂点 |頂点GL_LINE_RESET_TOKEN頂点

polygon < GL_POLYGON_TOKEN n polySpec

polySpec < polySpec 頂点 | 頂点頂点

ビットマップ < GL_BITMAP_TOKEN頂点

pixelRectangle < GL_DRAW_PIXEL_TOKEN頂点 |頂点のGL_COPY_PIXEL_TOKEN

passThru < GL_PASS_THROUGH_TOKEN値

vertex < 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture

2d < 値

3d < 値の値

3dColor < 値値の色

3dColorTexture < 値値の色 tex

4dColorTexture < value value value value color tex

color < rgba | index

rgba < 値値値

インデックス < 値

tex < 値値値

value パラメーターは浮動小数点数で、n は多角形内の頂点の数を示す浮動小数点整数です。 シンボリック浮動小数点定数は、GL_POINT_TOKEN、GL_LINE_TOKEN、GL_LINE_RESET_TOKEN、GL_POLYGON_TOKEN、GL_BITMAP_TOKEN、GL_DRAW_PIXEL_TOKEN、GL_COPY_PIXEL_TOKEN、GL_PASS_THROUGH_TOKENです。 行ヒント パターンがリセットされるたびに、GL_LINE_RESET_TOKENが返されます。 頂点として返されるデータは、フィードバックの 種類によって異なります。

次の表は、 と頂点あたりの値の数の対応を示しています。 k は、カラー インデックス モードでは 1、RGBA モードでは 4 です。

Type 座標 Color テクスチャ 値の合計数
GL_2D xy 2
GL_3D xyz 3
GL_3D_COLOR xyz k 3 + k
GL_3D_COLOR_TEXTURE xyz k 4 7 + k
GL_4D_COLOR_TEXTURE xyzw k 4 8 + k

フィードバック頂点座標は、クリップ座標内にある w を除き、ウィンドウ座標内にあります。 照明が有効になっている場合は、フィードバックの色が点灯します。 テクスチャ座標の生成が有効になっている場合、フィードバック テクスチャ座標が生成されます。 これらは常にテクスチャ マトリックスによって変換されます。

表示リストで使用 される glFeedbackBuffer 関数は、表示リストにコンパイルされず、すぐに実行されます。

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

引数GL_RENDER_MODEを含む glGet

必要条件

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

関連項目

glBegin

glEnd

glGet

glLineStipple

glPassThrough

glPolygonMode

glRenderMode

glSelectBuffer