Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
voprosy_k_MGiG_2013 123456.doc
Скачиваний:
52
Добавлен:
28.03.2015
Размер:
328.19 Кб
Скачать
  1. Модель освещения в OpenGl

Параметры модели задаются командой:

glLightModel[i f] v(GLenum pname, GLenum param)

Аргумент pname определяет единственное значение параметра модели освещения и может принимать следующие значения:

GL_LIGHT_MODEL_LOCAL_VIEWER - Параметр param содержит единственное булевское значение, определяющее местоположение наблюдателя. Если param = GL_FALSE, то направление наблюдения считается параллельным оси -z и направленным вдоль нее, независимо от действительного положения в видовых координатах. В противном случае (GL_TRUE) предполагается, что наблюдатель находится в начале видовой системы координат. По умолчанию параметр param установлен в GL_FALSE.

Использование локальной точки наблюдения позволяет создать более реалистичную картину зеркального освещения, так как для каждой точки поверхности формируется вектор, направленный на наблюдателя. В случае наблюдателя, расположенного в бесконечности, данный вектор для всех точек одинаков и направлен вдоль оси Z.

GL_LIGHT_MODEL_TWO_SIDE - Параметр param представляет единственное булевское значение, которое определяет расчет освещенности многоугольников для одной или двух граней. Этот параметр не влияет на расчет освещенности для точек, линий или битовых массивов. Если param = FALSE, то задано одностороннее освещение, и расчет освещенности производится только для лицевой грани. В противном случае (TRUE) задается двухстороннее освещение и, на ряду с лицевыми гранями, рассчитывается освещенность вершин обратных граней многоугольников. Их нормали направлены в противоположные стороны. По умолчанию FALSE. Если сцену составляют только замкнутые пространственные объекты (сферы, кубы и пр.), без сечений то целесообразно использовать расчет освещения только лицевых граней, что существенно ускоряет визуализацию объектов сцены.

GL_LIGHT_MODEL_COLOR_CONTROL - Параметр param может определятся символической константой GL_SEPATARE_SPECULAR_COLOR, заставляющей конвейер отделять вычисление зеркально отраженного света от других составляющих. В этом случае для каждой вершины рассчитываются два значения цвета: первое значение образуется совокупность всех не зеркальных составляющих, а второе суммой зеркальных составляющих. Данный режим важен при наложении текстур. При расчете результирующего цвета сначала первое значение комбинируется с цветовыми характеристиками текстуры, а затем результат объединяется со вторым значением. Такой подход позволяет получить более ярко выраженные зеркальные блики на текстурированной поверхности. Для возврата к значению, установленному по умолчанию, необходимо воспользоваться константой GL_SINGLE_COLOR .

Кроме того, для векторной версии команды доступно еще одно значение параметра pname.

GL_LIGHT_MODEL_AMBIENT - Параметр param содержит четыре целых или вещественных значения, которые задают полную фоновую интенсивность света. По умолчанию значение фонового цвета равно (0.2, 0.2,0.2, 1.0).

  1. Текстуры

Текстуры можно рассматривать как прямоугольные массивы данных, хранящие информацию о цвете. Массив называется картой текстуры или текстурной картой, а элементы массива по аналогии с пикселем – тексель (Texel). Массивы могут быть одно-, двух-, трех- или четырехмерными.

Для того, чтобы текстурировать объект, надо:

  1. Подготовить данные для текстуры (данные должны быть представлены двухмерным массивом, в том числе, изображением);

  2. Создать текстурный объект, если необходимо. Нулевой текстурный объект создается автоматически;

  3. Загрузить данные в текстурный объект;

  4. Установить необходимые фильтры увеличения или уменьшения текстуры;

  5. Определить поведение текстуры при выходе текстурных координат за диапазон (0;1);

  6. Задать функцию наложения текстуры, т.е. определить, как сочетать информацию из пикселя с информацией текселя;

  7. Привязать координаты текстуры к вершинам текстурированного объекта, т.е. указать для каждой вершины текстурные координаты;

  8. Можно рассчитать текстурные координаты, исходя из координат вершин.

  9. Включить режим текстурирования – разрешить системе использовать текстуры.

Загрузка данных в текстурный объект осуществляется командой glTextImage2D с перечисленными параметрами. Загрузка идет в текущий текстурный объект.

GL_PROXY_TEXTURE_2D проверяет возможность текстурирования.

Параметр level указывает уровень детализации: параметр задается отличным от нуля только в случае использования мультитекстурирования.

InternalFormat показывает, какую информацию вы хотите хранить в текселе.

ШИРИНА И ВЫСОТА ДОЛЖНЫ БЫТЬ СТЕПЕНЯМИ ДВОЙКИ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]