魁!豚トロ工房

古いビルの屋上で木工を楽しんでいます

png画像


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) だともう少し派手なディザ処理が入るっぽいです。


思った以上に問題が多くて、自信なくなってきた!!

■注意■  当ブログに記載されている製作・改造などの情報は、危険を伴う場合もありますので自己責任での利用をお願いします。