2011-12-29 111 views
2

我在市場上有一個使用OpenGL渲染一些基本形狀和平面的動態壁紙。簡單的照明會在平面上產生漸變效果,在大多數設備上看起來都很好。三星Galaxy S2系列似乎有一些麻煩,在呈現漸變,不過,你可以在這個屏幕截圖中看到:Android上的OpenGL漸變色帶

banding on GS2

彩色條紋看起來很恐怖,尤其是相對於從一個令人難以置信的這個屏幕截圖:

no banding on DInc

我使用的是在這兩種情況下,565 EGL配置,所以我相信這只是一個顯示問題與GS2設備。任何人都可以證實這種懷疑嗎?

是否有任何解決方案?

+0

我可以說的是,我看到類似的樂隊發生在我的SGS2上,同時玩漸變。 – harism 2011-12-29 15:53:22

+0

當使用抖動將圖像中的顏色數量減少爲可顯示的顏色數量時,經常會看到這種類型的條紋。 – Charles 2011-12-29 16:00:33

回答

1

看起來確實是GS2的顯示屏,或者更準確地說是抖動算法。我嘗試正在增加我的要求配置到RGB888,這是我得到了(從我的測試用戶的電話):

No banding GS2

所以它真的好像GS2少了點試圖映射時抖動了可怕的工作888空間中的顏色到565配置。

現在我不確定是否希望將所有設備的配置升級到888(質量更好但性能受到影響),或者僅限於我知道抖動不佳的設備。嗯。

2

你能證實,雖然你要求565,你實際上是565嗎?有EGL功能用於確認您最終得到的結果。我指的是檢查這兩個設備,因爲你可能會在Incredible和其他設備上獲得888,因此顯示效果更好。

+0

我會檢查返回的配置以確保,謝謝您的建議。 – Josh 2011-12-29 19:18:48

+0

看着它,我確實在所有設備上獲得了565。這是有道理的,因爲我有一些代碼檢查與我的請求配置最匹配的配置的有效返回配置。 – Josh 2011-12-30 17:42:55

+0

對於該建議+1,因爲它幫助我縮小了問題的範圍。 – Josh 2011-12-30 17:48:49

0

您是否嘗試禁用GL中的抖動?這可能會有所幫助。

GLES20.glDisable(GLES20.GL_DITHER);