最終更新: mikk_ni3_92 2008年12月24日(水) 18:54:00履歴
現在地: メニュー >> 実践編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);
サンプルコード
- 実践編05::まとめコード2_1(2パスで描画)
- 実践編05::まとめコード2_2(標準機能の両面ステンシルを利用)
- 実践編05::まとめコード2_3(EXT拡張の両面ステンシルを利用)