2011-12-29 113 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);