Назад | Оглавление | Домой | Далее
До сих пор не рассматривался α-канал (в 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).
Назад | Оглавление | Домой | Далее