Студопедия — Текстурные координаты
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Текстурные координаты






При создании текстурированных объектов необходимо кроме координат вершин задавать координаты текстуры. OpenGL использует их для отображения на поверхность объекта. Он наклеивает текстуру на геометрический примитив. Текстурные координаты определяют какой texel в буфере текстуры соответствует данной вершине. Так же как и цвет, текстура во внутренней области примитива интерполируется на основе информации о значениях в вершинах примитива. Изменив координату текстуры и оставив неизменной соответствующую координату вершины, мы заставляем OpenGL либо растянуть, либо сжать текстурный узор.

Текстурные координаты могут иметь один, два, три или четыре компонента. Их принято обозначать как s, t, r, и q -координаты. Это решение объясняется так: «чтобы не спутать с x, y, z, w — координатами объекта». Одномерные текстуры используют только s -компонент. Двухмерные — s и t. Говорят, что где-то есть реализации OpenGL, в которых работают 3D-текстуры. Они используют и r -компонент. Четвертый компонент q, как и координата w, обычно равен единице и может, как описано в advanced features, использоваться для создания однородных(?) координат. Для сопоставления координат текстуры с координатами вершины используют команду glTexCoord*. Ее обычно дают совместно с glVertex* и glNormal* внутри блока glBegin, glEnd, задающего примитив. Все компоненты заключены в диапазон [0, 1], но иногда, при создании повторяющихся узоров, они принимают значения в более широком диапазоне. В примере нет команд glTexCoord, задающих координаты текстуры, так как они генерируются с помощью функций glTexGen*, управляющих процессом генерации. Первый вызов:

glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);

задает линейное соотношение:

В соответствии с ним вычисляется s -координата текстуры. Коэффициенты заданы в массиве gParam, а вектор (x, y, z, w) содержит координаты той вершины объекта, с которой сопоставляется s -координата текстуры. Параметр GL_S функции glTexGen задает компоненту (s), вдоль которой изменяется текстура. Напомним, что 4-я координата вершины (w) выполняет роль масштабирующего множителя. Второй вызов glTexGen:

glTexGendv (GL_S, GL_OBJECT_PLANE, gParam);

задает коэффициенты формулы линейного изменения текстуры. Они хранятся в массиве gParam. Так как мы изначально задали в массиве три единицы, то текстура изменяется в направлении, задаваемом вектором с координатами (1, 1, 1, 1).

 

x
y
z

 


Такое поведение определяется константой GL_OBJECT_LINEAR. Если вы замените ее на GL_EYE_LINEAR, то направление изменения текстуры будет другим (проверьте). Функция glTexEnv управляет способом вычисления цвета текстурного пиксела. Ее вызов:

glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

можно убрать, так как режим GL_MODULATE, задаваемый им, действует по умолчанию. Последний параметр задает символическое имя одной из трех функций взаимодействия текстуры с ее окружением. Зачение GL_MODULATE сообщает OpenGL, что надо учитывать как цвет текстуры, так и цвет объекта, точнее, светоотражающие свойства материала и освещенность сцены. При выборе GL_DECAL цвет будет определяться только текстурой. Выбрав GL_BLEND, мы используем функцию, которая смешивает цвет текстуры с цветом объекта под ней (blending). Опробуйте режим GL_DECAL и убедитесь, что избражение без освещения стало плоским. Теперь заметим, что решение задачи начистки чайника до блеска — возврат режима GL_MODULATE и вставка в функцию Init двух строчек кода:

float f[] = { 1, 1, 1 };

glMaterialfv (GL_FRONT, GL_SPECULAR, f);







Дата добавления: 2015-10-19; просмотров: 1134. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

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

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

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия