OpenGL de プログラミング - 基本編21
現在地 >> メニュー >> 基本編21
INDEX:基本編20 << 基本編21 >> 基本編22

アキュムレーションバッファ


OpenGLには、「カラーバッファ」や「ステンシルバッファ」などの他に「アキュムレーションバッファ」がある。

これは、カラーバッファに何かレンダリングした後、
それを表示せずにアキュムレーションバッファにコピーし、色を蓄積する。

アキュムレーションバッファに色情報をためたり、ブレンド処理をする事を繰り返し、
最終的にカラーバッファに戻して表示する事ができる。


[ イメージ ]

カラーバッファアキュムレーションバッファ
(R, G, B, A)( 126, 144, 72, 0.9)( 0, 0, 0, 0 )
    ↓ 「アキュムレーションバッファ」に「1/3」に薄めたものを加算
カラーバッファアキュムレーションバッファ
(R, G, B, A)( 126, 144, 72, 0.9)( 42, 48 , 24 , 0.3 )
     ↓ もう一度、「アキュムレーションバッファ」に「1/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::まとめコード