Умножение каждого пикселя на его альфа-канал Open GLES 1.1 (предварительное умножение), а затем обратное

Я работаю над проектом, который находится в GLES 1.1. Это должен быть GLES 1.1.

Но он должен сделать некоторое предварительное умножение, т.е. получить каждый пиксель и изменить его с rgba = r*a,b*a,g*a,a. А потом наоборот.

Если бы у меня был доступ к шейдерам, это не было бы проблемой, но, конечно, с gles 1.1 у меня их нет.

Делать это с помощью readpixels, а затем делать это на процессоре и возвращать его обратно ужасно медленно, поэтому я пытаюсь придумать, как я могу обмануть.

Теперь я могу выполнить предварительное умножение, воспользовавшись преимуществами glTexEnvi.

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);

glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE0);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);

glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_TEXTURE1);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_ALPHA);

но потом мне нужно отменить операцию. Для жизни меня я не могу придумать способ обратить его вспять.

Если бы у всех была одинаковая альфа-версия, я мог бы злоупотреблять функциями glLighting, но, к сожалению, этого не происходит.

У меня такое чувство, что я немного обречен.

Возможно, я мог бы просто использовать общие контексты и сделать фрагмент GLES 2.0... но я чувствую, что это будет связано с собственными накладными расходами.

если у кого-то есть какие-либо идеи или мысли по этому поводу, я был бы очень признателен, если бы они были услышаны!


person chrispepper1989    schedule 06.03.2013    source источник


Ответы (1)


Не смог найти ответ ни сам, ни здесь. Давно это было, кому интересно...

В конце концов мне удалось убедить «сильных мира сего» позволить мне перевести проект на GLES 2.0. Процесс был на самом деле не очень болезненным (к счастью), и это того стоило.

Вышеупомянутая операция была успешно перенесена на графический процессор вместе с несколькими другими, и производительность была увеличена с 1 кадра в секунду до 60+ ... так что оно того стоило :).

Также стоит отметить, что гибридный подход стоил бы того, если бы переписывание не было вариантом.

person chrispepper1989    schedule 13.08.2014