現在地: メニュー >> 実践編05 >> 実践編05::ステンシルシャドウ

ステンシルシャドウ


基本的には切断面の表示と変わらない。
表面と裏面をそれぞれステンシル値を操作すればよい。




[例](※両面ステンシルで記述)
glEnable(GL_STENCIL_TEST);
glDepthMask(GL_FALSE); //デプス値は書きこまない
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);//色も書きこまない
	
glStencilFuncSeparate(GL_FRONT_AND_BACK, GL_ALWAYS, 0, ~0);
glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_KEEP, GL_INCR_WRAP);//表面は「+1」
glStencilOpSeparate(GL_BACK, GL_KEEP, GL_KEEP, GL_DECR_WRAP);//裏面は「-1」

... //-- シャドウボリュームを描画 --//...

//各種書き込みを許可
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glDepthMask(GL_TRUE);
glStencilFunc(GL_NOTEQUAL,0, ~0); //ステンシル値が0じゃない部分が影

... //-- 影の可視化 --// ...

glDisable(GL_STENCIL_TEST);

サンプルコード

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます