2011.11.18
【Android NDK】OpenGLでIndexカラーの画像を表示する
できるっぽいので試してみます。
以下のページを参考にしました。
Link:圧縮テクスチャ(インデックステクスチャ)の生成 - It_lives_vainlyの日記
手順としてはテクスチャの転送方法だけ違うだけのようです。
IndexカラーはglCompressedTexImage2Dを使って転送する必要がある。
第三引数にテクスチャ情報を指定する。
よく使いそうなのはこのあたり?
GL_PALETTE8_RGBA8_OES IndexカラーRGBA256色 GL_PALETTE4_RGBA8_OES IndexカラーRGBA16色
転送情報はパレットデータ、ピクセルデータの順に並べる。
ヘッダとかは付加しない。
確認機種はGalaxy S2になります。
・メモリ使用量
512*512の画像をピクセルフォーマットだけ変えて
タスクマネージャーでメモリの消費量を確認してみた。
メモリ使用量 | 画像情報 |
---|---|
5.25M | 32bitフルカラー |
3.85M | 8bit Indexカラー |
3.50M | 4bit Indexカラー |
確実にメモリ消費が減っていますね。
・描画速度
上位のJava側でcurrentTimeMillisで計測して見ました。
512*512画像を同じ座標に3000回描画してみたけど
そんなに差があるとは感じられず。
何かキャッシュが利いているのだろうか?
こんな感じでなかなか悪くない結果が出ました。
問題としてはこの機能がどこまでの機種に有効かというところでしょう。
ゲームとかだと当たり前にIndexカラーだけどOpenGLでは使えるという話を
そんなに聞かないのよね。
そのあたりが解決できれば優良な機能なので
ぜひとも使っていきたいところです。
Open GL ES 2.0 プログラミングガイド Aaftab Munshi Dan Ginsburg Dave Shreiner アフタブ・ムンシ ダン・ギンズバーグ デーブ・シュライナー 松田 晃一 ピアソン桐原 2009-11-01 |
関連記事