Androidでアクトレーザー:其ノ肆

=前置き=

 前回の「OpenGLを使った試作」を元に、アクトレーザーを書き直す。

 ただ、前回よりいくつか必要な知識が増えるので、まずはそれらを調べる。

=VBO=

 アクトレーザーに限らず、2Dアクションのステージ(地形)は同じ画像を複数並べることで構成されている。特に自分はRPG用のドット絵地形を使うことが多いので、こういうのに適した表示方法を使えるようにしておきたい。

 前回は地形全体を一つの画像にまとめていた。これは描画時の処理が速いものの、メモリにはだいぶムダがある。なので、GPUなどで描画を高速化でき、メモリにあまり余裕がないAndroidでは「画像は種類の分だけ保持」「描画のたびに並べて表示」の方が良い。そういう表示方法がVBOとして用意されているようなので、それを使う。

 コードの参考になるのはhttp://tueda.wikkii.com/wiki/Android%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-OpenGL。関数の説明は床井研究室 - 頂点配列床井研究室 - Vertex Buffer Objectが参考になる。「頂点」と「インデックス(頂点番号)」についてはglDrawElementsによる描画 - OpenGL de プログラミングがわかりやすい。

=FBO=

 レーザー描画は前回と同様「ステージと同じ大きさの画像」を用意しておき、移動のたびにその分のレーザー画像を追加して表示したい。

 OpenGLで「画面ではなく保持している画像に描きこむ」のはFBOでできるらしい。

 参考になるのはFBO::作成 - OpenGL de プログラミングあたり。

=ツール=

 ついでにAndroid用のツールもいくつか見てみたものの、自分の試作に使えそうなのは特になかった。
 Unityあたりは良さそうだったものの、Androidなどでリリースするには金がかかるようなので保留。

 代わりに使えるライブラリはありそうなんだけど、今のところOpenGLまわりだけでなんとかなりそう。ただ、プリミティブ描画(円や線の単純な描画)が意外と面倒だったりするので、そこらへんをまとめたライブラリとかは将来的に使うかもしれない。

=作業=

 今日は調べ物が多かったので、実際のコーディングなどは明日やることにした。良さそうなのがなかったので上ではまとめてないけど、レーザーの描画なども調べたりしてた。
 VBOにしてもFBOにしても知っておくと色々とできることが増えそうなので、今のうちにちゃんっと使えるようにしておきたい。

=予定=

 明日はまずVBOによるタイリングに対応して、他のゲームでも簡単にドット絵地形を並べて表示できるようにしておきたい。
 その後、FBOでのレーザー描画に入る予定だけど、ちゃんとしたレーザー描画になるのはもう一日かかるかもしれない。