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