Question

I've got a live wallpaper out on the market which uses OpenGL to render some basic shapes and a flat plane. The simple lighting creates a gradient effect across the plane, which looks fine on most devices. The Samsung Galaxy S2 series seems to have some trouble rendering the gradient, though, as you can see in this screen shot:

banding on GS2

The color banding looks awful, especially compared to this screen shot from an Incredible:

no banding on DInc

I'm using a 565 EGL config in both cases, so I believe this is just a display issue with the GS2 devices. Can anyone confirm this suspicion?

Is there any solution to the banding?

Was it helpful?

Solution 2

Looks like it really is the GS2's display, or more accurately, its dithering algorithm. I tried upping my requested config to RGB888, and this is what I get (from my test user's phone):

No banding GS2

So it really seems like the GS2 just does a horrible job of dithering when trying to map colors in an 888 space to a 565 config.

Now I'm not sure if I want to up the config to 888 across all devices (better quality but a performance hit), or only on devices which I know to dither poorly. Hmmm.

OTHER TIPS

Can you confirm that, though you request 565, that you are, in fact, getting 565? There are EGL functions for confirming what you end up getting. I refer to checking on both devices since you might be getting 888 on the Incredible and other devices, hence the better-looking display.

Have you tried to disable dithering in GL? This might help a bit.

GLES20.glDisable(GLES20.GL_DITHER);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top