最終更新: mikk_ni3_92 2008年11月14日(金) 16:16:01履歴
現在地 >> メニュー >> 基本編21
INDEX:基本編20 << 基本編21 >> 基本編22
OpenGLには、「カラーバッファ」や「ステンシルバッファ」などの他に「アキュムレーションバッファ」がある。
これは、カラーバッファに何かレンダリングした後、
それを表示せずにアキュムレーションバッファにコピーし、色を蓄積する。
アキュムレーションバッファに色情報をためたり、ブレンド処理をする事を繰り返し、
最終的にカラーバッファに戻して表示する事ができる。
[ イメージ ]
↓ 「アキュムレーションバッファ」に「1/3」に薄めたものを加算
↓ もう一度、「アキュムレーションバッファ」に「1/3」に薄めたものを加算
↓ 「アキュムレーションバッファ」を「リターン」する
「アキュムレーションバッファ」の操作は
[例]
サンプルコード >> 基本編21::まとめコード
INDEX:基本編20 << 基本編21 >> 基本編22
OpenGLには、「カラーバッファ」や「ステンシルバッファ」などの他に「アキュムレーションバッファ」がある。
これは、カラーバッファに何かレンダリングした後、
それを表示せずにアキュムレーションバッファにコピーし、色を蓄積する。
アキュムレーションバッファに色情報をためたり、ブレンド処理をする事を繰り返し、
最終的にカラーバッファに戻して表示する事ができる。
[ イメージ ]
カラーバッファ | アキュムレーションバッファ | |
(R, G, B, A) | ( 126, 144, 72, 0.9) | ( 0, 0, 0, 0 ) |
カラーバッファ | アキュムレーションバッファ | |
(R, G, B, A) | ( 126, 144, 72, 0.9) | ( 42, 48 , 24 , 0.3 ) |
カラーバッファ | アキュムレーションバッファ | |
(R, G, B, A) | ( 126, 144, 72, 0.9) | ( 84, 96, 42, 0.6) ←「加算される」 |
カラーバッファ | アキュムレーションバッファ | |
(R, G, B, A) | ( 84, 96, 42, 0.6) | ( 84, 96, 42, 0.6) |
「アキュムレーションバッファ」の操作は
glAccum (GLenum mode, GLfloat value)で行う。
[例]
for(int loop = 0; loop < 3 ; ++loop) { glTranslatef(loop*0.5,0,0); SetMaterialGold(); glutSolidSphere(0.5,30,30); glAccum(GL_ACCUM, 1.0/3.0);//1/3だけ蓄積 } glAccum(GL_RETURN, 1.0); //カラーバッファに書き込み
サンプルコード >> 基本編21::まとめコード