Практикум прикладного программирования на C# в среде VS.NET 2005

Смешивание, туман, сглаживание, отклонение в OpenGL

Показывать лекцию целиком

Файлы к лабораторной работе Вы можете скачать здесь.

Для того, чтобы сделать отображение сцены еще более реалистичным, библиотека OpenGL предлагает еще несколько технологий, позволяющих ввести дополнительные детали:

  • Смешивание (Blending) - использование альфа-компонента цвета для получения эффекта прозрачности.
  • Сглаживание (Antialiasing) - подбор цвета граничных пикселов точек и линий для устранения их "зубчатости", возникающей из-за дискретности пиксельной сетки.
  • Туман (Fog) - добавление эффекта, когда более удаленные от наблюдателя объекты кажутся более размытыми.
  • Параметры точки (PointDistanceAttenuation) - рисование точки "налету" с цветом и размером, изменяющимися в зависимости от расстояния до наблюдателя. Эта технология применяется для ускорения рисования множеств как скопища отдельных частиц разного размера и цвета, например, снега, дождя.
  • Коррекция глубины многоугольников - технология комбинированного рисования многоугольников, залитых одним цветом, с контуром другого цвета и нужной толщиной или фактурой. Поскольку закрашенные многоугольники и их контурные линии растеризуются по разному, то значения глубины, вычисленные для линий, могут не совпадать со значениями глубины для границ многоугольника даже между двумя одинаковыми вершинами. Этот нежелательный эффект визуально неприятен и напоминает стежки (stitching) на швах одежды. Он может быть устранен коррекцией глубины многоугольников.
  • Смешивание

    Применяемая в OpenGL модель цвета RGBA подразумевает в качестве последнего параметра альфа-канал, задающий прозрачность. Значения этого параметра лежат в пределах [0, 1], где 0 - абсолютно прозрачный ( transparency ), 1 - абсолютно непрозрачный ( opacity ). Когда смешивание включено, то входящий в буфер кадра после растеризации фрагмент рисунка ( источник, Source - S ) комбинируется со значениями цвета пикселов уже хранящегося там блока пикселов ( получатель, Destination - D ). При отключенном смешивании информация источника о цвете в буфере цвета просто заменяет прежнюю информацию получателя и ни о какой прозрачности говорить не приходится.

    Смешивание позволяет управлять тем, в каких пропорциях сохраненный ранее цвет должен быть объединен с новым фрагментом. С помощью альфа-компонента можно получать эффекты, когда сквозь новые фрагменты будут проступать ранее сохраненные фрагменты, которые полностью не замещаются новыми. Смешивание - основа технологии полупрозрачности, цифровой композиции и закрашивания.

    Пусть, например, наблюдатель смотрит на объект через зеленое стекло. Цвет, который он увидит, будет смесью цвета стекла и цвета объекта. Ниже приведены два варианта этого примера с белым и черным фоном. Обратите внимание, что в реальной жизни черный фон вокруг объекта через зеленое стекло все равно должен быть черным, а на рисунке это не так. Но зато черный цвет увеличивает зрительный контраст цветов.

    Режим смешивания включается и выключается командами

    glEnable(GL_BLENDING);
       glDisable(GL_BLENDING);

    По умолчанию режим смешивания выключен.

    Во время смешивания цвета входящего фрагмента (источника) комбинируются с соответствующими текущими сохраненными значениями пикселей в два этапа по следующему алгоритму:

    Вернуться к учебному плану