GLFEEDBACKBUFFER

Section: Misc. Reference Manual Pages (3G)
索引 xjman
 

名前

glFeedbackBuffer - フィードバックモードを制御する

 

書式

void glFeedbackBuffer( GLsizei size,

                         GLenum type,
                         GLfloat *buffer )

delim $$  

引き数

size
buffer に書き込める最大値を指定する。
type
各頂点について返される情報を表すシンボル定数を指定する。 GL_2D, GL_3D, GL_3D_COLOR, GL_3D_COLOR_TEXTURE, GL_4D_COLOR_TEXTURE を指定できる。
buffer
フィードバックデータが返される。
 

説明

glFeedbackBuffer はフィードバックを制御する。 フィードバックはセレクションと同様に GL のモードのひとつである。 このモードは glRenderMode に引き数 GL_FEEDBACK を 指定して呼び出すことによって選択する。 GL がフィードバックモードのときは、ラスタライズ処理は まったくピクセルを生成しない。 その代わりに、ラスタライズされるはずのプリミティブに関する情報が GL を通じてアプリケーションに返される。 glFeedbackBuffer は引き数を 3 つ取る。 buffer は浮動小数点値の配列を指すポインタである。 この配列にはフィードバック情報が格納される。 size は配列のサイズを示す。 type は各頂点に対してフィードバックされる情報を表す シンボル定数である。 glFeedbackBuffer は、フィードバックモードが (引き数 GL_FEEDBACK を指定して glRenderMode を 呼ぶことによって)有効にされる前に発行しなければならない。 フィードバックバッファを用意しないで GL_FEEDBACK を 設定したり、GL がフィードバックモードである時に glFeedbackBuffer を実行するとエラーになる。 フィードバックモードにおいて glRenderMode が呼ばれると、この 関数はフィードバック配列に格納された項目数を返し、フィードバックバッファを指す ポインタはフィードバックバッファの先頭を指すようにリセットされる。 関数が返す値が size を超えることはない。 フィードバックデータを格納するのに buffer で使える以上の領域が必要 な場合は、glRenderMode は負の値を返す。 GL をフィードバックモードから抜けさせるためには、 GL_FEEDBACK 以外の引き数を指定して glRenderMode を 呼ぶこと。 フィードバックモードにおいては、通常ではラスタライズされるはずの プリミティブ、ビットマップ、ピクセル矩形のそれぞれは 一連の値を生成し、これらの値がフィードバック配列にコピーされる。 これを行うことによってエントリ数が最大値を超える場合には、 ブロックは配列を全部埋める分だけが書き込まれる(空きが全く 残っていない場合)、オーバーフローフラグが立てられる。 それぞれのブロックはプリミティブの型を示すフラグで始まり、 その後にプリミティブの頂点と属性データを表すデータが続く。 エントリはビットマップとピクセル矩形に対しても書き込まれる。 フィードバックはポリゴンのカリング処理と glPolygonMode によるポリゴンの解釈処理の実行後に起こるので、 カリングされたポリゴンはフィードバックバッファには返されない。 また、 GL の実装が辺の数が3つより多いポリゴンを三角形に分割してレンダリングする 場合には、フィードバックはこの分割の実行後に起こる。 glPassThrough コマンドを使うとフィードバックバッファに マーカーを挿入できる。 glPassThrough を参照すること。 以下に示すのは、フィードバックバッファに書き込まれる 値の集合についての規則である。 それぞれのプリミティブは、先頭のユニークな識別値および その後に続くいくつかの頂点データで示される。 ポリゴンの項目には、後にいくつ頂点が続くかを示す整数値が含まれる。 頂点はいくつかの浮動小数点値としてフィードバックされる。 フィードバックの内容は type で示される。 色は RGBA モードでは 4 個の値でフィードバックされ、 色インデックスモードでは 1 個の値でフィードバックされる。

feedbackList <- feedbackItem feedbackList | feedbackItem

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

point <- GL_POINT_TOKEN vertex

lineSegment <- GL_LINE_TOKEN vertex vertex | GL_LINE_RESET_TOKEN vertex vertex

polygon <- GL_POLYGON_TOKEN n polySpec

polySpec <- polySpec vertex | vertex vertex vertex

bitmap <- GL_BITMAP_TOKEN vertex

pixelRectangle <- GL_DRAW_PIXEL_TOKEN vertex | GL_COPY_PIXEL_TOKEN vertex

passThru <- GL_PASS_THROUGH_TOKEN value

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

2d <- value value

3d <- value value value

3dColor <- value value value color

3dColorTexture <- value value value color tex

4dColorTexture <- value value value value color tex

color <- rgba | index

rgba <- value value value value

index <- value

tex <- value value value value

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 が返される。 頂点として返されるデータはフィードバックの型(type)に よって異なる。 以下の表は type と頂点ごとに持つ値の数の対応表を示す。 ただし k は色インデックスモードならば 1 であり、 RGBA モードならば 4 である。


座標テクスチャ値の合計個数

GL_2Dx, y2
GL_3Dx, y, z3
GL_3D_COLORx, y, z$k$$3 ~+~ k$
GL_3D_COLOR_TEXTUREx, y, z,$k$4$7 ~+~ k$
GL_4D_COLOR_TEXTUREx, y, z, w$k$4$8 ~+~ k$

フィードバック頂点座標はウィンドウ座標である。 ただし w は例外であり、これはクリップ座標である。 ライティングが有効であれば、 フィードバック色はライティング処理された値である。 テクスチャ座標の生成が有効であれば、 フィードバックテクスチャ座標が生成される。 これらの座標は必ずテクスチャ行列で変換される。  

注意

glFeedbackBuffer をディスプレイリスト内で使った場合、 この関数はディスプレイリストに組み込まれずに即座に実行される。 GL の実装が GL_ARB_multitexture 機能拡張に対応している場合、 glFeedbackBuffer はテクスチャ単位 GL_TEXTURE0_ARB の テクスチャ座標だけを返す。  

エラー

GL_INVALID_ENUM: type の値が不正である場合に起こる。 GL_INVALID_VALUE: size の値が負であると起こる。 GL_INVALID_OPERATION: レンダリングモードが GL_FEEDBACK のときに glFeedbackBuffer を実行するか、glFeedbackBuffer が少なくとも一度呼ばれるよりも 前に glRenderMode に引き数 GL_FEEDBACK を指定して 呼び出すと起こる。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd の間で glFeedbackBuffer を実行すると起こる。  

関連する取得値

引き数 GL_RENDER_MODE を指定した glGet
引き数 GL_FEEDBACK_BUFFER_POINTER を指定した glGet
引き数 GL_FEEDBACK_BUFFER_SIZE を指定した glGet
引き数 GL_FEEDBACK_BUFFER_TYPE を指定した glGet  

関連項目

glBegin(3G), glLineStipple(3G), glPassThrough(3G), glPolygonMode(3G), glRenderMode(3G), glSelectBuffer(3G)


 

Index

名前
書式
引き数
説明
注意
エラー
関連する取得値
関連項目

jman



Time: 07:01:07 GMT, January 12, 2009