ニコニコ動画マイリスト

2011年11月7日月曜日

TLGエンコーダ作成中

あの有名なADVツクール吉里吉里で使われている画像形式である
TLG5、TLG6。特にTLG6はPNGよりも高圧縮な可逆圧縮で
SIMD命令に最適化してあり、展開も2倍以上速いと
ゲームにとってはいいことずくめ。私のゲームでも使ってます。

・・・が、表示にOpenGLを使っている以上、BMP形式でのデコードを
想定されているのが若干もったいないのです。

OpenGLは基本的にRGBで色を指定するのですが、BMPは
BGRで色を保存しています。
したがって、OpenGLのExtentionであるGL_BGR、GL_BGRAを
使用するか、圧縮の前あるいは展開の後にデータを変換する
必要があるわけです。

Extentionを使ってしまうともしかしたらLinux等でそのまま
コードが使えない
(まぁ、今現在の状態でコントローラ入力部分で使えないンですけど)
可能性が出てくるわけで、
では、展開の後はどうかというと、展開の度に変換を
行わなければならず、折角の展開の速度が落ちてしまいます。

よって、圧縮前が最良だろうと考えたわけで、
吉里吉里のソースをパクって 参考にしてエンコーダを
作成しました。

・・・しかし、圧縮率が低い!

同じBGR形式のデータにしても約1.5倍ほど容量が
大きくなってしまいます・・・

さて、どうしたものやら。
お陰で徹夜してしまいました。でも出来ない・・・
う~む。

追記
エンコード作れました。
http://gameprogrammingbyumi.blogspot.jp/2011/11/tlg6_14.html

0 件のコメント:

コメントを投稿