Esate.ru
Esate.ru Уроки Программирование 3D Уроки OpenGL + C#Текстурирование в OpenGL. Введение.

Уроки OpenGL + C#

Выполняя главы последовательно, вы ознакомитесь с основами синтаксиса C#, увидите, как просто создавать оконные приложения с помощью .net, познакомитесь с библиотекой Tao, которая обеспечивает поддержку OpenGl в среде .NET, изучите основы 2D визуализации, работу как с примитивами, так и принцип загрузки и построения сложных 3D моделей , экспортированных из 3D редакторов.

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

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

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

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

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

Библиотека DEVIL

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

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

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



Источник: Esate.ru
08 Января 2010


Комментарии (из ветки форума)

Авторизируйтесь или Зарегистрируйтесь
чтобы оставлять комментарии.

OpenGL

OpenGL

OpenGL (Open Graphics Library — открытая графическая библиотека, графический API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Регистрация

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

Восстановление пароля

Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш E-mail. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
 
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
 

Авторизация

Пожалуйста, авторизуйтесь, для входа на сайт с помощью соц. сети:
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.

или с помощью аккаунта на сайте:

Логин
Пароль