GLACCUM

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

名前

glAccum - アキュームレーションバッファを操作する

 

書式

void glAccum( GLenum op,

                GLfloat value )

delim $$  

引数

op
アキュームレーションバッファの操作を指定する。 シンボル定数 GL_ACCUM, GL_LOAD, GL_ADD, GL_MULT, GL_RETURN を指定できる。
value
アキュームレーションバッファの操作で使われる浮動小数点数値を 指定する。 value の使われかたは op によって決まる。
 

説明

アキュームレーションバッファは範囲を拡張したカラーバッファである。 アキュームレーションバッファにはイメージはレンダリングされない。 その代わりに、 カラーバッファのどれかにレンダリングされたイメージは、 レンダリングの後にアキュームレーションバッファの内容に追加される。 (点や線、ポリゴンの)アンチエイリアシングや、モーションブラー、 フィールドの深さといった効果は、 異なる変換行列で作られたイメージを加えることで作ることができる。 アキュームレーションバッファ内の各ピクセルは、 赤、青、緑、アルファ値から構成されている。 アキュームレーションバッファ内での要素値ごとのビット数は、 実装によって異なる。 各要素の値は glGetIntegerv を引数を変えて 4 回呼ぶことで 得られる。 その際の引き数は GL_ACCUM_RED_BITS, GL_ACCUM_GREEN_BITS, GL_ACCUM_BLUE_BITS, GL_ACCUM_ALPHA_BITS である。 各要素値のビット数に関わらず、それぞれの要素値が 取る値の範囲は [-1, 1] である。 アキュームレーションバッファのピクセルは、フレームバッファのピクセルと 一対一に対応する。 glAccum はアキュームレーションバッファを操作する。 最初の引数 op は、アキュームレーションバッファへの操作を 選ぶためのシンボル定数である。 2 番目の引き数 value は、この操作で使う浮動小数点値である。 指定できる操作は次の 5 つである: GL_ACCUM, GL_LOAD, GL_ADD, GL_MULT, GL_RETURN. アキュームレーションバッファの操作が影響する範囲は現在のシザーボックスの 領域に制限される。 また、この操作は各ピクセルの要素値(赤、青、緑、アルファ値)に 対して同じように適用される。 glAccum による操作の結果として得られた値が [-1, 1] の範囲を 超えた場合のアキュームレーションバッファのピクセルの要素値は 未定義である。 各操作の説明を以下に行う:
GL_ACCUM
R, G, B, A 値を取得する。 取得元は現在読み込みのために選択されているバッファである (glReadBuffer を参照)。 各要素値は $2 sup n^-^1$ で割り算される。 ここで $n$ は、現在選択されているバッファにおいて、各要素値に割り当て られているビット数である。 割り算の結果として得られる値は [0, 1] の範囲の浮動小数点値であるが、 この値に value を掛けたものが、取得元のピクセルに対応する アキュームレーションバッファ上のピクセルの要素値に追加される。
GL_LOAD
GL_ACCUM に似ているが、アキュームレーションバッファの 現在値が新しい値の計算に使われない点が異なる。 つまり、次の計算を行う。 まず現在選択されているバッファから R, G, B, A 値を取り出し、 その値を $2 sup n^-^1$ で割ってから value を掛ける。 最後に、この値を取得元のピクセルに対応する アキュームレーションバッファのピクセルに格納する。 現在の値は上書きする。
GL_ADD
value をアキュームレーションバッファの R, G, B, A の値にそれぞれ追加する。
GL_MULT
アキュームレーションバッファ内の R, G, B, A 値に value を掛け、 その結果を元の要素に対応するアキュームレーションバッファの位置に返す。
GL_RETURN
アキュームレーションバッファ内の値を カラーバッファまたは現在書き込み用に選択しているバッファに移す。 R, G, B, A 要素はそれぞれ次のように処理される。 まず value が掛けられ、次に $2 sup n^-^1$ で割られて [0,$~2 sup n^-^1 $] の範囲に収められ、最後に ディスプレイバッファの対応するセルに計算結果が格納される。 この移動処理が適用されるフラグメント操作は、 ピクセルの所有権処理、 シザー処理、 ディザリング処理、 色の書き込みマスク処理だけである。 アキュームレーションバッファをクリアするには、まず R, G, B, A の値を設定して glClearAccum を呼び出し、 次にアキュームレーションバッファを有効にした状態で glClear を 呼び出すこと。
 

注意

glAccum 操作で更新されるのは、 現在のシザーボックスに入っているピクセルだけである。  

エラー

GL_INVALID_ENUM: op の値が不正である場合に起こる。 GL_INVALID_OPERATION: アキュームレーションバッファがない場合に 起こる。 GL_INVALID_OPERATION: glBegin とこれに対応する glEnd の間で glAccum が実行された場合に起こる。  

この関数に関連して取得する値

引き数 GL_ACCUM_RED_BITS を指定した glGet
引き数 GL_ACCUM_GREEN_BITS を指定した glGet
引き数 GL_ACCUM_BLUE_BITS を指定した glGet
引き数 GL_ACCUM_ALPHA_BITS を指定した glGet  

関連項目

glClear(3G), glClearAccum(3G), glCopyPixels(3G), glDrawBuffer(3G), glGet(3G), glReadBuffer(3G), glReadPixels(3G), glScissor(3G), glStencilOp(3G)


 

Index

名前
書式
引数
説明
注意
エラー
この関数に関連して取得する値
関連項目

jman



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