ВУЗ:
Составители:
Рубрика:
39
Как известно, для качественного текстурирования объектов необходимо соблюдать масштабные
пропорции между текстурой и покрываемым объектом. Чем больше увеличение объекта, тем больше
требуется образ текстуры для покрытия. И, наоборот, чем меньше становится объект тем меньше требу-
ется размер текстуры. Вот тут и требуется уровень детали-
зации текстуры (mipmap). Если текстура имеет размер 2
n
×2
m
, то можно
построить max(n, m) + 1 уменьшенных образов текстур. Команда glTexImage2D() позволяет определить
max(n, m) уменьшенных текстур, в каждой из которой будет храниться уменьшенная копия оригинала.
Благодаря этому OpenGL будет использовать соответствующий уровень детализации текстуры при со-
ответствующем масштабе объекта.
В OpenGL имеется специальная команда (для одномерных текстур не рассматриваем) успешно вы-
полняющая автоматическое построение всех возможных уровней уменьшающихся текстур по отноше-
нию к оригиналу. Это команда gluBuild2DMipmaps():
int gluBuild2DMipmaps (GLenum target, GLint components,
GLint width, GLint height,
GLenum format, GLenum type,
const void *data)
Назначение параметров соответствует команде glTexImage2D(). Кроме основной функции эта ко-
манда может работать с изображениями текстур размер которых не является степенью 2. В этом случае
происходит масштабирование образа до ближайших степеней 2. При успешном завершении работы ко-
манда возвращает значение 0, а в противном случае – код ошибки.
После выполнения команд создания текстур, последние копируются во внутреннюю память
OpenGL, и поэтому память, занимаемую исходным изображением, можно освободить.
Перед тем как приступить к созданию текстур необходимо разрешить соответствующий режим ко-
мандой glEnable(GL_TEXTURE_2D).
13.1.3 Эстетические параметры текстурирования объектов
При тестурировании поверхностей 3D моделей возникают множество проблем с качеством визуали-
зации текстур. В основном проблемы возникают когда на одну точку изображения на экране приходит-
ся несколько точек текстуры и наоборот. Это происходит при приближении или удалении от камеры
наблюдаемого объекта. А бывают ситуации, когда в центральной проекции поверхность 3D объекта на-
ходится своими участками одновременно и в зоне увеличения и уменьшения масштаба объекта, напри-
мер, этот эффект хорошо наблюдается когда камера, расположенная рядом с поверхностью, смотрит
вдоль ее. В любом случае, если не предпринимать специальных мер, наблюдается лестничный эффект
для близких поверхностей и потеря рисунка текстуры для дальних участков поверхности.
Для устранения подобных проявлений в визуализации текстур в OpenGL имеются команды настраи-
вающие параметры визуализации текстур:
void glTexParameter [i f](
GLenum target,
GLenum pname,
GLtype param);
void glTexParameter[i
f]v(
GLenum target,
GLenum pname,
Const GLtype *params);
ГДЕ:
TARGET ОПРЕДЕЛЯЕТ ТИП ТЕКСТУРЫ И ПРИНИМАЕТ ЗНАЧЕНИЯ: GL_TEXTURE_2D
ИЛИ GL_TEXTURE_1D;
PNAME ОПРЕДЕЛЯЕТ НАЗВАНИЕ ПАРАМЕТРА ТЕКСТУРЫ, КОТОРОЕ БУДЕТ ИЗМЕ-
НЯТЬСЯ;
PARAM (PARAMS) УСТАНАВЛИВАЕТ НОВОЕ ЗНАЧЕНИЕ ПАРАМЕТРА PNAME;
РАССМОТРИМ ВОЗМОЖНЫЕ ПАРАМЕТРЫ ТЕКСТУРЫ (PNAME):
pname
Описание
GL_TEXTURE_MIN_FIL
TER
• ОПРЕДЕЛЯЕТ АЛГОРИТМ
СЖАТИЯ ТЕКСТУРЫ ДЛЯ
ОБЪЕКТОВ, РАЗМЕР КО-
ТОРЫХ
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »
