Если треугольник, составленный из вершин VA - V6, рисовался функцией Render0( ) полностью потому, что был выведен позже, то теперь его центральная часть закрыта более близкими точками треугольника Vx - V3.

Из того, что точки с Z-координатой, равной нулю, оказались закрытыми точками с Z = -0.8, можно заключить, что в библиотеке OpenGL наблюдатель смотрит вдоль положительного направления оси Z. Но, как мы видели, это определяется не системой координат, а вызовом функции glDepthFunc( ).

Имитация полупрозрачности Для имитации полупрозрачных граней в коде цвета, задаваемом функцией glColor4d( ), предусмотрен четвертый параметр, который указывает коэффициент непрозрачности альфа. В предыдущих примерах его значение не оказывало никакого влияния на изображение, так как по умолчанию была выключена операция конвейера, выполняющая смешивание цвета выводимого фрагмента и цвета уже записанного в видеопамять пиксела. Смешивание включается функцией glEnable(GL_BLEND). После его включения цвет фрагмента, сформированного при развертке примитива, и цвет уже хранящегося в видеопамяти пиксела суммируются с весовыми коэффициентами. Значения весовых коэффициентов определяются функцией glBlendFunc(Src, Dest). Первый параметр определяет способ задания веса фрагмента, а второй - способ задания веса пиксела.

Настройка конвейєра В библиотеке предусмотрены различные способы выбора весовых коэффициентов. Например, цвета фрагмента и пиксела могут просто суммироваться без всякого учета коэффициентов непрозрачности. Но тогда область пересечения будет выглядеть ярче, чем каждая из граней.

Лучше всего сделать так, чтобы сумма весовых коэффициентов равнялась единице и вес фрагмента задавался его коэффициентом непрозрачности. Предположим, что компоненты цвета пиксела имеют значения |}р, вр, Вр и в позицию этого пиксела записывается вершина, цвет которой задан функцией д1Со1ог4с1 Су, Ву, 0.4). Тогда результирующий цвет будет определяться следующими выражениями: Д = 0.4 + -0Л)Яр; С = 0.4 Gv + (\-ЪA)Gp\

строительные материалы http://fish-industry.ru/.

В = 0.4 Вг> + (1 -0Л)Вр.


⇐ Предыдущая| |Следующая ⇒