OpenGL градиентная полоса на Android
У меня есть живые обои на рынке, которые используют OpenGL для рендеринга некоторых основных фигур и плоской плоскости. Простое освещение создает эффект градиента по всей плоскости, что прекрасно выглядит на большинстве устройств. В серии Samsung Galaxy S2, похоже, есть некоторые проблемы с рендерингом градиента, как вы можете видеть на следующем снимке экрана:
Цветная полоса выглядит ужасно, особенно по сравнению с этим снимком экрана из Incredible:
Я использую конфигурацию 565 EGL в обоих случаях, так что я считаю, что это просто проблема дисплея с устройствами GS2. Кто-нибудь может подтвердить это подозрение?
Есть ли какое-то решение для полос?
3 ответа
Похоже, это действительно дисплей GS2, или, точнее, его алгоритм сглаживания. Я попытался увеличить запрашиваемую конфигурацию до RGB888, и вот что я получаю (с телефона моего тестового пользователя):
Так что действительно кажется, что GS2 просто ужасно справляется с размыванием, когда пытается сопоставить цвета в пространстве 888 с конфигурацией 565.
Теперь я не уверен, хочу ли я обновить конфигурацию до 888 на всех устройствах (лучшее качество, но снижение производительности), или только на устройствах, которые, как я знаю, плохо перемешиваются. Хммм.
Можете ли вы подтвердить, что, хотя вы запрашиваете 565, вы на самом деле получаете 565? Есть функции EGL для подтверждения того, что вы в итоге получаете. Я имею в виду проверку на обоих устройствах, так как вы можете получить 888 на Невероятном и других устройствах, отсюда и более привлекательный дисплей.
Вы пытались отключить дизеринг в GL? Это может немного помочь.
GLES20.glDisable(GLES20.GL_DITHER);