mqoビューワだいたい完成


▲三次元CG@七葉のはちゅねさん
ほっぺたのα抜きのグルグルがまだだが力尽きた。
RGBAテクスチャの透明は動くのだが、別画像によるαチャンネルに対応するの忘れてた。


テクスチャ周辺の作業が長かった。
JOGLのAPIが妙に変わっていて(それも不便な方向にw)かなり消耗した。
特に、

TextureIO.newTexture(BufferedImage, true);

というのが無くなっているのに対して、別の方法を探すのがめんどくさすぎだった。
実際、コードも面倒なことになっていて

BufferedImage
↓
Raster
↓
DataBuffer
↓
byte[]
↓
nio.ByteBuffer
↓
TextureData
↓
Texture

という長い道のりを経なければならなかった。
これを、サンプルコード無しで突き止めるのはつらいデス。
OpenGLがバージョンを上げてglVertexとかを廃止して敷居を上げたりするのと呼応するかのように、
JOGLもユーザーアンフレンドリー路線ということのようだ。
別にシンプルで一貫性のあるAPI自体は嫌いではないのだが、サンプルコードをください。


今回は、Javascalaの混ぜ書きでいけるかどうかの実験でもあったのだがこれに関しては特に問題なさそうだ。
コード量もわりとコンパクトになって

$ wc -l *
  104 Drawable.scala
  179 GLDriver.java
  203 GLScene.scala
  179 JOGLAPP.java
  334 MqoLoader.scala
  254 TargaReader.java
 1253 合計

こんな感じに。
一番長いのは、Mqoのローダで順当。TargaReaderは取り回しを考えて敢えてjavaで書いているのでこんなもん。
もっとscalaを練習してListを濫用したHaskel的なコードを書けば圧縮できそうだ。
徐々にArrayBufferからListにシフトして高階関数とパターンマッチだらけにしていきたい。

引き続きスキニングを実装してJBulletを組み込むあたりまではやろうかと思っている。
今後、もっと規模が増えて行くことは間違いないので適当にpackageの割り方を考えて一度リファクタリングせねばなるまい。