OpenGL系でブロックが壊せるところまで書き直し完了しましたが、何かおかしい・・・
この画像の「SCORE」の部分に黒い縁取りがついてしまっています。
テクスチャの抜きの部分はAlphaが0でColorは白(255,255,255)にしてあるのに、なぜか黒(0,0,0)い透明色となっていて、それをバイリニアフィルタで吸い込んでいるみたいです。
色々テストした結果、どうもpng画像を読み込んだ時点でAlpha=0のピクセルはColorが黒(0,0,0)になってしまうのが仕様っぽいです。
これってバイリニアフィルタONで抜き表現のあるテクスチャを使う場合、画像が汚れてしまうので、表示解像度が不確定なAndroidにとって致命的な気がします・・・orz
Canvas系の時は気にならなかったので見直してみると、なるほど!バイリニアを使わずにスケールしているから気にならないのか!
これって大きいタブレットみたいなハードで表示したら、ガタガタの表示になってしまうのでは?むむむー
で、この問題の解決策を考えてみました。
1.抜きの画像には黒い縁取りのついたデザインしか使わない。
2.png画像を自前で読み込む。
3.外部でColorとAlphaの二つの画像に分けて2つの画像として読み込み内部で合成。
4.外部でAlpha=0の部分をAlpha=1にしておき、AlphaTestで1以下をはじく。
とりあえず手作業で4.を実行して目的の結果になりました。
ただOpenGLを使った時だけ画像のように謎のディザ処理が発生する別の問題?も発見してしまいました。
glDisable(GL10.GL_DITHER) とか指定しているのになぜなんだろう・・・
glEnaable(GL10.GL_DITHER) だともう少し派手なディザ処理が入るっぽいです。
思った以上に問題が多くて、自信なくなってきた!!