Кисть прозрачности текстуры с OpenGL ES на iPhone - PullRequest
1 голос
/ 26 марта 2012

Я новичок в OpenGL и пытаюсь реализовать кисть-ластик, которая будет стирать текстуру с помощью мазка кисти, чтобы раскрыть фон представления opengl, регулируя значение альфа-канала на мазке кисти.для непрозрачного свойства представления OpenGL установлено значение NO.

Я использую GLPaint от Apple в качестве отправной точки.Кисть, которую я использую, представляет собой текстуру, центр которой равен альфа-нулю с радиально затухающим альфа-каналом до 1 на краях контроллера.

Я использую glColorMask(0,0,0,1), чтобы рисовать только на альфа-канале.

Теперьпроблема в функции смешивания.Если я использую glBlendFunc(GL_DST_ALPHA, GL_SRC_ALPHA), это работает, но не так, как я ожидал.

Я хочу, чтобы итоговая альфа была минимальной из целевого альфа (альфа уже на экране) и альфа изкисть.

Функция смешивания glBlendFunc(GL_DST_ALPHA, GL_SRC_ALPHA) не работает в таких случаях, как ...

Допустим, экран (пункт назначения) имеет альфа 0,5.Когда край кисти (где альфа кисти равен 1) касается этого пикселя, альфа результирующего пикселя должна оставаться 0,5 (минимум 1 и 0,5).Но с вышеуказанной функцией смешивания она станет (1 * 0,5 + 1 * 1), что снова сделает ее более непрозрачной.

Какие варианты смешивания я должен использовать, чтобы получить гладкую кисть стирания?Есть ли другой способ, который я могу использовать, чтобы решить его?

...