12.1 Текстурирование в OpenGL. Введение.

До сих пор мы рисовали все геометрические объекты либо одним цветом, либо с плавной закраской (когда внутренние цвета рассчитываются интерполяцией цветов в вершинах) – то есть объекты рисовались без текстурирования. Если вы хотите нарисовать массивную кирпичную стену без текстурирования, каждый кирпичик должен быть нарисован в виде отдельного полигона. Без текстурирования такая стена может потребовать тысяч полигонов, хотя сама она является прямоугольной, и даже тогда кирпичи будут выглядеть слишком гладкими и одинаковыми, то есть недостаточно реалистичными.

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

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

Тексел (сокращение от texture element) – это индивидуальное значение элемента текстуры.

Библиотека DEVIL

Для работы с текстурами мы будем использовать библиотеку DevIL. Как мы уже говорили, описывая компоненты библиотеки Tao, DevIL 1.6.8.3, включенная в Tao 2.1.0 (она же OpenIL) – кроссплатформенная библиотека, реализующая программный интерфейс для работы с изображениями. На данный момент библиотека поддерживает работу с изображениями 43-х форматов для чтения и 17-ти форматов для записи.

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

Чтобы использовать наложение текстуры, вы должны выполнить следующие шаги:
  1. Создать текстурный объект и задать текстуру для него.
  2. Задать, как текстура должна воздействовать на каждый пиксель.
  3. Активизировать механизм текстурирования.
  4. Нарисовать сцену, передавая на конвейер визуализации, геометрические координаты и координаты текстуры.
В следующей главе мы рассмотрим загрузку и наложение текстуры на реальном примере.

Нет доступа к просмотру комментариев.

^