Я пытаюсь понять способ воссоздания или, по крайней мере, получить аналогичный результат для уравнения смешивания максимального зажима в OpenGl es 2.0 на устройствах Android.Создание эквивалента эквивалента смеси GL_MAX с использованием других методов
К сожалению, glBlendEquation(GL_MAX_EXT)
не поддерживается на Android. GL_MAX enum
определен в заголовке gl на Android, но при выполнении получается GL_INVALID_ENUM
, ошибка 0x0500.
У меня есть решение с использованием шейдеров и текстур вне экрана, где каждый рендеринг ping-pongs между текстурами использует шейдер для вычисления максимального значения пикселя.
Однако это решение не достаточно быстро для любого режима реального времени на большинстве Android-устройств.
Итак, учитывая это ограничение, есть ли способ воссоздать аналогичный результат, используя только разные уравнения смешивания и коэффициенты смешивания?
Я пробовал много комбинаций функций смеси, ближе всего были:
glBlendFunction (GL_SRC_ALPHA, GL_ONE_MINUS_ALPHA): Это происходит близко, но текстуры становятся слишком прозрачными. Текстуры с низкими значениями альфа трудно увидеть.
glBlendFunction (GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA): Это также приближается к тому, что близко, но альфа накапливает слишком много, а цвета становятся темнее, чем предполагалось.