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

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

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

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

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

Библиотека DEVIL

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

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

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

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

^
Регистрация
Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 
×
Восстановление пароля
Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш Email. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
×
Авторизация
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.
Авторизуйтесь с помощью соц. сети или с помощью аккаунта на сайте:
×