2013-03-02 3 views
3

Я пытаюсь понять способ воссоздания или, по крайней мере, получить аналогичный результат для уравнения смешивания максимального зажима в 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): Это также приближается к тому, что близко, но альфа накапливает слишком много, а цвета становятся темнее, чем предполагалось.

ответ

1

Если вы могли бы сделать GL_MAX blending, не нуждаясь в специальной функции смешивания ... OpenGL никогда бы не добавил его в первую очередь. Таким образом, ваши возможности обойтись или использовать ваш шейдерный метод.

Смежные вопросы