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 関数では、次のエラー コードを取得できます。
名前 | 意味 |
---|---|
|
type が受け入れられた値ではありません。 |
|
size が負の値でした。 |
|
レンダリング モードがGL_FEEDBACKされている間に glFeedbackBuffer が呼び出されたか、glFeedbackBuffer が少なくとも 1 回呼び出される前に、引数 GL_FEEDBACK を指定して glRenderMode が呼び出されました。 |
|
この関数は、 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 | x、y | 2 | ||
GL_3D | x、 y、 z | 3 | ||
GL_3D_COLOR | x、 y、 z | k | 3 + k | |
GL_3D_COLOR_TEXTURE | x、 y、 z、 | k | 4 | 7 + k |
GL_4D_COLOR_TEXTURE | x、 y、 z、 w | k | 4 | 8 + k |
フィードバック頂点座標は、クリップ座標内にある w を除き、ウィンドウ座標内にあります。 照明が有効になっている場合は、フィードバックの色が点灯します。 テクスチャ座標の生成が有効になっている場合、フィードバック テクスチャ座標が生成されます。 これらは常にテクスチャ マトリックスによって変換されます。
表示リストで使用 される glFeedbackBuffer 関数は、表示リストにコンパイルされず、すぐに実行されます。
次の関数は、 glFeedbackBuffer に関連する情報を取得します。
引数GL_RENDER_MODEを含む glGet
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|
ライブラリ |
|
[DLL] |
|