OpenGL градиентная полоса на Android - PullRequest
2 голосов
/ 29 декабря 2011

У меня есть живые обои на рынке, которые используют OpenGL для рендеринга некоторых базовых форм и плоской плоскости. Простое освещение создает эффект градиента по плоскости, что прекрасно выглядит на большинстве устройств. В серии Samsung Galaxy S2, похоже, есть некоторые проблемы с рендерингом градиента, как вы можете видеть на снимке экрана:

banding on GS2

Цветные полосы выглядят ужасно, особенно по сравнению с этим снимком экрана из Incredible:

no banding on DInc

Я использую конфигурацию EGL 565 в обоих случаях, поэтому я считаю, что это просто проблема отображения с устройствами GS2. Кто-нибудь может подтвердить это подозрение?

Есть ли какое-либо решение для полос?

Ответы [ 3 ]

2 голосов
/ 29 декабря 2011

Можете ли вы подтвердить, что, хотя вы запрашиваете 565, вы на самом деле получаете 565? Есть функции EGL для подтверждения того, что вы в итоге получаете. Я имею в виду проверку на обоих устройствах, поскольку вы можете получить 888 на Невероятном и других устройствах, отсюда и более привлекательный дисплей.

1 голос
/ 30 декабря 2011

Похоже, это действительно дисплей GS2 или, точнее, его алгоритм сглаживания. Я попытался увеличить запрашиваемую конфигурацию до RGB888, и вот что я получаю (с телефона моего тестового пользователя):

No banding GS2

Так что действительно кажется, что GS2 просто ужасно справляется с размыванием, когда пытается сопоставить цвета в пространстве 888 с конфигурацией 565.

Теперь я не уверен, хочу ли я обновить конфигурацию до 888 на всех устройствах (лучшее качество, но снижение производительности), или только на устройствах, которые, как я знаю, плохо перемешиваются. Хммм.

0 голосов
/ 06 января 2012

Вы пытались отключить дизеринг в GL?Это может немного помочь.

GLES20.glDisable(GLES20.GL_DITHER);
...