вторник, 24 августа 2010 г.

Минимальный набор функций OpenGL для работы с текстурами

1)
a)Первым необходимым шагом при наложении карты текстуры на геометрический объект является загрузка текстуры в память. Загруженная текстура становиться частью текущего "состояния текстуры". Для этой загрузки используются функции
void glTexImage{N}D(...);
Текстура грузится из памяти, на которую указывает указатель, являющийся последним аргументом этих функций.Или одно- и двух- мерные текстуры можно загрузить также из буфера цвета:
void glCopyTexImage{1,2}D(...);
К загруженным данным текстуры применяются упаковка пикселей, масштабирование пикселей таблицы цветов, свертки и т.д.
b)Чтобы пользоваться этими функциями необходимо включить или выключить данное состояние текстуры:
glDisable(GL_TEXTURE_{M}D);
glEnable(GL_TEXTURE_{N}D);

2)То, как OpenGL объединяет цвета текселей с цветом геометрического объекта, на который накладывается текстура, зависит от режима текстурной среды, который устанавливается функцией glTexEnv.Правила визуализации и поведение применяющихся карт текстуры можно также изменением параметров функций семейства glTexParameter.
3)Далее надо задать текстурные координаты вершин (То есть присвоение вершинам объекта, на который накладываем текстуру, "координат" в "пространстве" текстуры). Обращение к текселям карты текстуры выполняется не как к ячейкам памяти (как для пиксельных образов), а как к абстрактным текстурным координатам (переменные с плавающей запятой в диапазоне от 0 до 1):
void glTexCoord{N}f(...);
Эта функция вызывается между glBegin и glEnd, перед соответствующей функцией glVertex{N}x(...);Для работы с несколькими текстурами и более быстрого переключения между ними используются функции:
a)glGenTextures - принимает в качестве параметров указатель на массив целых чисел и его размер. Эти целые числа играют роль идентификаторов текстур (текстурных объектов).
b)glBindTexture - делает текущим выбранный текстурный объект.
c)glDeleteTextures - освобождает ресурсы, занятые текстурными объектами.

Комментариев нет: