OpenGL градиентная полоса на Android

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

полосатость на GS2

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

на DInc нет полос

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

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

3 ответа

Решение

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

Нет полос GS2

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

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

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

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

GLES20.glDisable(GLES20.GL_DITHER);
Другие вопросы по тегам