Параметры наложения текстуры

Из параметров визуализации рассмотрим установку параметров окружения и фильтрации пикселов. Параметры окружения устанавливаются функцией glTexEnv[if]. Действие ее состоит в формировании функции преобразования цветов источника света, цвета образа текстуры, цвета вершин примитивов и цвета конфигурации текстуры для получения результирующего цвета поверхности с наложенной на нее текстурой. Функция существует в двух вариантах в зависимости от входных параметров. Рассмотрим описание для вещественных входов:

void glTexEnvfv(

GLenum target,

GLenum pname,

const GLfloat *params

);

Параметр target всегда принимает значение GL_TEXTURE_ENV. Параметр pname задает один из двух вариантов GL_TEXTURE_ENV_MODE или GL_TEXTURE_ENV_COLOR.

В случае когда pname= GL_TEXTURE_ENV_MODE доступны три варианта вызова функции:

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL),

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND),

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE).

Когда pname=GL_TEXTURE_ENV_COLOR, то третий параметр представляет собой указатель на четырехкомпонентный массив цвета:

glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, @CColor),

где переменная описана как

var

CColor: array[1..4]of Glfloat;

По умолчанию для этих команд установлены значения: GL_MODULATE для режима GL_TEXTURE_ENV_MODE и цвет (0,0,0,0) для режима GL_TEXTURE_ENV_COLOR.

Далее в таблице, в соответствии с [15], приводятся варианты формирования результирующей функции преобразования с помощью команды glTexEnv.

Количество цветовых компонент GL_MODULATE GL_DECAL GL_BLEND
Cv=LtCf нет Cv=(1-Lt)Cf+LtCc Av=Af
Cv=LtCf Av=AfAt Нет Cv=(1-Lt)Cf+LtCc Av=AfAt
Cv=CtCf A=A Cv=Ct Av=Af нет
СvtСf Av=AfAt Cv=(1-At)Cf+AtCt Av=Af нет

Здесь A – значение альфа канала; L – яркость. Для двухкомпонентных изображений цвет состоит из компонент яркости L и альфа составляющей A. Трехкомпонентный цвет в качестве яркости использует три цветовые компоненты C, а четырехкомпонентный цвет использует C и A.

Индексы в формулах: f – фрагмент, на который накладывается текстура, t – образ текстуры, c – цвет конфигурации текстуры, v – результирующее значение.

Из практических экспериментов можно заметить, что для обычных матовых поверхностей хороший визуальный эффект получается использованием режима GL_MODULATE. Простой режим отображения текстуры с эффектом полупрозрачности можно получить в режиме GL_DECAL. В режиме GL_BLEND можно получить эффект негатива изображения.

Параметры масштабирования текстуры задаются функцией glTexParameter[if].

Самый простой и быстрый но не самый реалистичный способ отображения при масштабировании задается комбинацией параметров в режиме GL_NEAREST:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) –

для масштабирования в сторону увеличения текстуры, и

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST) -

для масштабирования в сторону уменьшения. Более приемлемые результаты с точки зрения сглаживания цветов соседних пикселов при масштабировании текстуры дает вариант линейного сглаживания:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

и

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

В режиме GL_LINEAR цвет пиксела текстуры получается как среднее арифметическое четырех соседних пикселов. Также возможны режимы с использованием битовых карт уровней детализации текстуры, которые задаются функцией gluBuild2DMipmaps.

Список литературы

1. Аммерал Л. Машинная графика на языке С. В 4-х томах – М: Сол. Систем, 1992.

2. Боресков А.Б., Шикина Е.В., Шикина Г.Е., Компьютерная графика: первое знакомство. – М.: Финансы и статистика, 1996.

3. Вэн-Дэм А., Фоли Дж. Основы интерактивной машинной графики.Т.1-2 – М.: Мир, 1985.

4. Гилой, Интерактивная машинная графика. - М.: Мир, 1981.

5. Грайс Графические средства персональных компьютеров. – М.: Мир, 1980.

6. Жикин Е.В., Боресков А.В. Компьютерная графика. Динамика, реалистические изображения. – М.: Диалог-МИФИ, 1995, 1997.

7. Компьютер обретает разум. Пер. с англ. Под ред. В.Л.Стефанюка – М.: Мир, 1990.

8. Ласло М. Вычислительная геометрия и компьютерная графика на С++. М.: Бином, 1997.

9. М.Маров, 3D Studio MAX 2.5: справочник – СПб: «Питер», 1999. – 672 с.

10. А.Ла Мот, Д.Ратклифф и др. Секреты программирования игр/ Перев с англ. – СПб: Питер, 1995. – 720 с.

11. Ньюмен, Спрулл, Основы интерактивной машинной графики. - М.: Мир, 1976.

12. Ф. Препарата, М. Шеймос, Вычислительная геометрия: Введение. - М. Мир, 1989.

13. Роджерс Алгоритмические основы машинной графики. – М.: Мир, 1989.

14. Роджерс, Адамс, Математические основы машинной графики. - М. Машиностроение, 1985.

15. Ю.Тихомиров, Программирование трехмерной графики - С.-Пб.: БХВ‑Санкт-Петербург,1999.

16. Н. Томпсон, Секреты программирования трехмерной графики для Windows 95. Перев с англ. – СПб: Питер, 1997. – 352 с.

17. А.Фокс, М. Пратт, Вычислительная геометрия - М., Мир, 1982.

18. А.В.Фролов, Г.В.Фролов, Графический интерфейс GDI в MS WINDOWS – М.: Диалог-МИФИ, 1994.

19. Хонич А. Как самому создать трехмерную игру. – М.: МИКРОАРТ, 1996.

20. Энджел Й. Практическое введение в машинную графику. – М.: Радио и Связь, 1984.

21. А.Б.Боресков, Е.В.Шикина, Г.Е.Шикина, Компьютерная графика: первое знакомство, Под ред. Е.В.Шикина - М.: Финансы и статистика, 1996.

22. Краснов М, OpenGL. Программирование трехмерной графики на Delphi. – СПб.: БХВ – Петербург, 2000.

23. Краснов М., DirectX. Графика в проектах Delphi. – СПб.: БХВ – Петербург, 2001.

24. А.Ла Мот, Д.Ратклифф и др. Секреты программирования игр/ Перев с англ. – СПб: Питер, 1995. – 720 с.

25. М.Маров, 3D Studio MAX 2.5: справочник – СПб: «Питер», 1999. – 672 с.

26. Ю.Тихомиров, Программирование трехмерной графики. - С.-Пб.: БХВ‑Санкт-Петербург,1999.

27. Н. Томпсон, Секреты программирования трехмерной графики для Windows 95. Перев с англ. – СПб: Питер, 1997. – 352 с.

28. Стен Трухильо, Графика для Windows средствами Direct Draw. - С.-Пб: Питер Ком, 1998 – 320 с.

29. А.В.Фролов, Г.В.Фролов, Графический интерфейс GDI в MS WINDOWS, Москва, Изд-во Диалог-МИФИ, 1994Майкл Ласло, Вычислительная геометрия и компьютерная графика на С++, - М.: Бином, 1997.

30. А.Хонич, Как самому создать трехмерную игру. - М.: МИКРОАРТ, 1996.

31. Джим Адамс, DirectX: продвинутая анимация. – М.: КУДИЦ-ОБРАЗ, 2004.

32. Пол Стид, Анимация персонажей для игр в реальном времени. – М.: ДМК Пресс, М, 2004.

* В этом определении при замене, скажем, оси Oz на ось Ox остальные оси заменяются по правилу циклической перестановки, то есть Oy заменится на Oz, а Ox заменится на Oy. Всего здесь циклических перестановок может быть три: (x,y,z)®(y,z,x)®(z,x,y).

* Более строгое определение однородных координат дается в разделе линейной алгебры «Проективные пространства».

Наши рекомендации