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

=前置き=

 レーザーの描画の対応をやる。

=普通の描画=

 e3roidによって画面の拡大・縮小などが行われているため、普通にレーザーを描き足そうとしても位置やスケールがおかしくなってしまう。そのため、それらの処理をリセットするような対応と、再びe3roid用の処理に戻す対応が必要になる。


 まず問題だったのはVBO。レーザーの描画はVBOを使わず普通にやっているけど、他のVBOで使ったglBindBufferがそのままになっていたためVBOの設定が混じってしまった。レーザーの描画をVBOにする方法もあるけれど、ここではglBindBuffer(〜, 0)とすることでVBOの設定をリセットすることにした。


 次の問題は射影行列の設定。OpenGL(というか3D全般)の表示には「スクリーン行列」「射影行列」「ビュー行列」を指定する必要がある。「スクリーン行列」に関してはglViewportで一発で指定できるものの、「射影行列」はglOrthoだけでは指定できない。glOrthoの前にglMatrixModeで「これから射影行列を変更しますよ」という設定をしてからでないと上手くいかない。glOrthoなんて射影行列にしか使わないと思うのだが、ともかくそういう設定が必要。
 そして、ここでは「スクリーン行列」と「射影行列」を変更しているため、e3roidでの設定を事前に記憶しておいてそれに戻す処理も追加した。


 この2つの問題を突き止めるだけで6時間くらいかかってしまったので、レーザーの本描画はさらに明日に持ち越しになった。

=予定=

 明日こそはレーザーの本描画に対応して全て終わらせたい。レーザーの重ね合わせの問題は深度バッファを使うことで解決できそうなので、おそらくなんとかなるはず。

 なんともならなかったら、さすがに時間がかかりすぎなので次の試作に移ってしまおうかと考え中。もともとアクトレーザーの試作は「一番簡単に移植できそうだから移植することでAndroidに慣れる」という目的だったので、レーザーの描画部分がここまで難しいとなると次の試作に移ってしまった方が良いと思う。