質問: 私は今LWJGLを利用し、OpenGLの描画を行っているのですが、ブレンドについての理解がなかなかできず行き詰まっております。 こちらの画像を参考に光の表現をしてみましたが、 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/a266820a54af017da196f98397ebcf8a.jpeg) 分かりづらくてすみませんが、参考にした画像は背景(草地)がしっかりと描画されているのに対し、 こちらはキャラクターやブロックが透けており白色を含む部分は透明になってしまいます。(ここに写っている白い部分は光です。) ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/5b33477fe7d6e5ee067280ac7a97d401.png) 私が行った描画方法は、まず黒地に光の部分(白い部分)を描画したものを用意します。 (上の画像とは違う場面です。すみません。) ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/db03402bd1f42d1cca149bf1fbcb7769.png) この際、黒の部分はglBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)(アルファブレンド)の設定で描画し、 白の光の部分はglBlendFunc(GL_SRC_ALPHA,GL_ONE)(加算合成)の設定で描画しています。 その次にglBlendFunc(GL_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA)の設定でキャラクターとブロックを描画しているのですが、上記の問題が起きてしまいます。 ソースコードが複雑なことから関連部分を抜粋することが難しいため描画手順を書かせていただきました。 ご教授願います。
回答: 描画した光の上にキャラクター1体ずつブレンドするのではなく、一度描画したキャラクターの上にまた次のキャラクターをブレンドしたことが原因でした。 解決はまだしておりませんが、この質問は解決済みということにさせていただきます。 すみませんでした。