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
- 名前
-
- 書式
-
- 引数
-
- 説明
-
- 注意
-
- エラー
-
- この関数に関連して取得する値
-
- 関連項目
-
Time: 07:01:04 GMT, January 12, 2009