我在市场上有一个动态壁纸,它使用 OpenGL 来渲染一些基本形状和平面。简单的照明在平面上产生渐变效果,在大多数设备上看起来都很好。不过,三星 Galaxy S2 系列似乎在渲染渐变时遇到了一些问题,正如您在此屏幕截图中看到的那样:
色带看起来很糟糕,尤其是与难以置信的屏幕截图相比:
在这两种情况下我都使用 565 EGL 配置,所以我相信这只是 GS2 设备的显示问题。谁能证实这个怀疑?
有没有什么办法可以解决绑带?
您能否确认,尽管您请求 565,但您实际上得到了 565?有用于确认您最终得到什么的 EGL 函数。我指的是检查这两种设备,因为您可能会在 Incredible 和其他设备上获得 888,因此显示效果更好。
看起来它真的是 GS2 的显示,或者更准确地说,它的抖动算法。我尝试将我请求的配置提升到 RGB888,这就是我得到的(来自我的测试用户的手机):
因此,在尝试将 888 空间中的颜色映射到 565 配置时,看起来 GS2 只是在抖动方面做得很糟糕。
现在我不确定我是想在所有设备上将配置提高到 888(质量更好,但性能受到影响),还是只在我知道抖动很差的设备上。嗯。
您是否尝试在 GL 中禁用抖动?这可能会有所帮助。
GLES20.glDisable(GLES20.GL_DITHER);