2011-12-29 20 views
2

OpenGLを使用して基本的な図形や平面をレンダリングするライブ壁紙が市場に出ています。シンプルな照明では、飛行機全体にグラデーション効果が生まれます。これはほとんどのデバイスでうまくいきます。サムスンギャラクシーS2シリーズは、あなたがこのスクリーンショットで見ることができるように、しかし、いくつかのトラブル勾配のレンダリングを持っているようだ:AndroidでのOpenGLグラデーションバンディング

banding on GS2

バンディングは特に信じられないから、このスクリーンショットに比べて、ひどいに見える色:

no banding on DInc

私は両方のケースで565 EGLの設定を使用していますので、私は、これはGS2デバイスとだけ表示上の問題であると考えています。誰もこの疑惑を確認できますか?

バンディングの解決策はありますか?

+0

グラデーションで遊んでいる間に私のSGS2で同様のバンディングが起こっているのがわかりました。 – harism

+0

このタイプのバンディングは、ディザリングを使用して画像の色数を表示可能なものに減らすときによく見られます。 – Charles

答えて

1

本当にGS2のディスプレイ、またはより正確にはディザリングアルゴリズムのようです。私はRGB888に私の要求された設定を増額しようとしたが、これは私が(私のテストユーザーの電話から)得るものです:

No banding GS2

マップしようとするとGS2はちょうどディザリングの恐ろしい仕事をしていませんのようなので、それは本当にそうです888スペースの色を565の設定に変更します。

すべてのデバイスで設定を888にする(品質は向上しますがパフォーマンスは低下します)か、あまりうまくいきません。うーん。

2

565をリクエストしても、実際には565を取得していることを確認できますか?あなたが何を得るのかを確認するためのEGL関数があります。信じられないほどのデバイスやその他のデバイスで888を取得している可能性があるので、私は両方のデバイスをチェックすることを参照します。

+0

私は返されたconfigsを確認して、その提案に感謝します。 – Josh

+0

それを見て、私は本当にすべてのデバイスで565を取得していました。これは理にかなっています。なぜなら、要求された設定と最もよく一致するものに対して有効な返された設定をチェックするコードが少しあるからです。 – Josh

+0

+1は、問題の絞り込みに役立ちました。 – Josh

0

GLでディザリングを無効にしようとしましたか?これは少し助けるかもしれません。

GLES20.glDisable(GLES20.GL_DITHER);