日記 > ゲーム制作 > 加算合成

日記 (2015 年 1 月 31 日)

エフェクトなどを表示するときに、 画像を加算合成すればキラキラ感が出て良い感じになる気がしたので、 加算合成の方法を調べてみました。 LWJGL と Slick2D を使います。

まず、 下のコードを記述しておけば、 それ以降の画像描画の際に加算合成が行われます。 LWJGL のみの場合は、 これ以前にアルファブレンドを有効化するコードを記述しておかなければなりませんが、 Slick2D を入れると自動的に有効になるようです。

GL11.gl_blend_func(GL11::GL_SRC_ALPHA, GL11::GL_ONE)

もとに戻したければ、 次のコードで戻ります。

GL11.gl_blend_func(GL11::GL_SRC_ALPHA, GL11::GL_ONE_MINUS_SRC_ALPHA)

試しにちょっと使ってみた結果がこちらになります。

遊び半分でやったんですが、 黄昏時のきれいな感じが出せて、 これはこれで実際のゲーム内で採用しても良いんじゃないかという感じです。

さて、 これで一応は満足なんですが、 Slick2D を用いてプログラムしているのに LWJGL のコードが突然出てくる形になるので、 少し気持ち悪さが残ります。 もう少し Slick2D っぽくて気軽に使えるようなユーティリティーメソッドでも作っておこうと思います。 Slick2D にこういう機能があれば良いんですが、 私が探した範囲では簡単なものしかありませんでした。

追記 (2015 年 3 月 17 日)

普通に Slick2D に画像合成の方法を指定するメソッドがありました。 Graphics オブジェクトの graphics に対して、 今後描画されるものを全て加算合成をしたい場合は、 以下のようにすれば OK です。

graphics.draw_mode = Graphics.MODE_ADD
Copyright © 2009‐2016 Ziphil, All rights reserved.
inserted by FC2 system