Я разрабатываю кросс-платформенную игру для Android и iOS. Для нескольких объектов, похожих на афишу, я использую аддитивное смешение (glBlend(GL_ONE, GL_ONE)
) с текстурами черного фона. Изображенные объекты выглядят отлично (т. Е. Черные пиксели из текстуры выглядят полностью прозрачными) почти везде. Однако на двух разных устройствах Android с графическим процессором Adreno (один Nexus 4 и другой Sony Xperia Go) у меня есть такие артефакты: Аддитивные смешивания артефактов с OpenGL ES 2.0 на некоторых устройствах Android
Как видно с помощью значка гамбургера, цвет фона истекает в рендер-квадрант. Я предполагаю, что это цвет фона, потому что эффект не отображается, когда квадратики афиша прямо перед фоном. Чтобы сделать вещи более странными, эффект не отображается, когда я снимаю снимок экрана с устройства, поэтому мне нужно сделать снимок экрана с другой камерой. Я также заметил, что артефакты исчезают, когда я включаю Disable HW Overlays
из настроек разработчика Android. Артефакты также исчезают, когда на экране появляется другое прозрачное окно, например, ползунок громкости, когда я нажимаю кнопки регулировки громкости.
Когда я показываю свою сцену, я сначала визуализую непрозрачные объекты в первом проходе, а затем во втором проходе я визуализую свои прозрачные рекламные щиты с помощью glBlend(GL_ONE, GL_ONE)
и с отключением записи глубины.
Помимо публикации здесь, попробуйте также на форумах сообщества разработчиков Qualcomm. вы пробовали с разными внутренними форматами текстур? – Trax
Спасибо за совет, я тоже попробую. – rgngl