Назад | Оглавление | Домой | Далее

7.7.        Полупрозрачность. Использование α-канала

До сих пор не рассматривался α-канал (в RGBA-представлении цвета) и значение соответствующей компоненты во всех примерах всегда равнялось единице. Задавая значения, отличные от единицы, можно смешивать цвет выводимого пикселя с цветом пикселя, уже находящегося в соответствующем месте на экране, создавая тем самым эффект прозрачности.

При этом наиболее естественно думать об этом, считая что RGB-компоненты задают цвет фрагмента, α-значение – его непрозрачность (степень поглощения фрагментом проходящего через него света). Так, если у стекла установить значение, равное 0.2, то в результате вывода цвет получившегося фрагмента будет на 20 % состоять из собственного цвета стекла и на 80 % – из цвета фрагмента под ним.

Для использования α-канала необходимо сначала разрешить режим прозрачности и смешения цветов командой gEnable(GL_BLEND).

В процессе смешения цветов цветовые компоненты выводимого фрагмента RsGsBsAs смешиваются с цветовыми компонентами уже выведенного фрагмента RdGdBdAd по формуле

(RsSr+RdDr, GsSg+GdDg, BsSb+BdDb, AsSa+AdDa),

где (Sr, Sg, Sb, Sa) и (Dr, Dg, Db, Da) – коэффициенты смешения.

Для задания связи этих коэффициентов с α-значениями используется функция glBlendFunc(GLenum sfactor, GLenum dfactor).

Здесь параметр sfactor задаёт то, как нужно вычислять коэффииенты (Sr, Sg, Sb, Sa), а параметр dfactor – коэффициенты (Dr, Dg, Db, Da).

 

Назад | Оглавление | Домой | Далее