Объекты, которые мы отрисовывали в предыдущих главах имели сплошной цвет или имели плавную закраску. Мы не использовали текстуры. Если бы при отрисовке трехмерных сцен не использовалось текстурирование, то нам пришлось бы создавать невероятную детализацию с миллиардами полигонов. Естественно, это не целесообразно, ведь мы можем нанести на один большой полигон какое-либо изображение (по сути изображение натягивается на трехмерный объект, в соответствии с указанными текстурными координатами).
Таким образом, один полигон может представлять сразу целую часть трехмерной сцены – например, небо, стены, заборы, и т.д. В сочетании с установкой свойств материалов и других спецэффектов (например бамп-мэппинг) вы можете достигнуть высокого уровня детализации поверхности. По сути, текстуры – это массивы данных, которые в соответствии с текстурными координатами будут наложены на трехмерный объект.
Тексел (сокращение от texture element) – это индивидуальное значение элемента текстуры.
Библиотека DEVIL
Для работы с текстурами мы будем использовать библиотеку DevIL. Как мы уже говорили, описывая компоненты библиотеки Tao, DevIL 1.6.8.3, включенная в Tao 2.1.0 (она же OpenIL) – кроссплатформенная библиотека, реализующая программный интерфейс для работы с изображениями. На данный момент библиотека поддерживает работу с изображениями 43-х форматов для чтения и 17-ти форматов для записи.Таким образом, мы сможем быстро и без реализации километров собственного (далеко не идеального кода) для загрузки данных графического файла использовать данную библиотеку.
Чтобы использовать наложение текстуры, вы должны выполнить следующие шаги:
- Создать текстурный объект и задать текстуру для него.
- Задать, как текстура должна воздействовать на каждый пиксель.
- Активизировать механизм текстурирования.
- Нарисовать сцену, передавая на конвейер визуализации, геометрические координаты и координаты текстуры.