Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сжатие 2д текстур

6.4K
11 марта 2004 года
Helios
1 / / 21.01.2004
Народ, объясните, плз...
Допустим 2д текстура при наложении на 2д объект сжимается (в режиме GL_NEAREST, без мипмапинга). Почему закономерность горизонтального сжатия (по оси s) отличается от закономерности вертикального сжатия (по оси t)? Мне почему-то казалось, что оба направления должны быть равнозначны. Может нужно какие настройки изменить ??

Поясню на конкретном тестовом примере.

1) Создаю текстуру размерами 1x4. Беру прямоугольник (0, 0); (1, 0); (1, 500); (0, 500). Накладываю так, чтобы текстура сжалась только по оси t.
[COLOR=darkblue]
glBegin(GL_QUADS);

glTexCoord2d (0 / 1, 0 / 3);
glVertex2i (0, 0);

glTexCoord2d(1 / 1, 0 / 3);
glVertex2i(1, 0);

glTexCoord2d(1 / 1, 500 / 3);
glVertex2i(1, 500);

glTexCoord2d(0 / 1, 500 / 3);
glVertex2i(0, 500);

glEnd();
[/COLOR]
В этом случае рисуется узкий вертикальный прямоугольник (полоска пикселей) в котором чередуются тексели с коордунатами (0, 0), (0, 1), (0, 3). Т.е. при сжатии теряется тексель с координатами (0, 2). Все ок.

2) Создаю текстуру размерами 4 x 1. Беру прямоугольник (0, 0); (500, 0); (500, 1); (0, 1). Накладываю так, чтобы текстура сжалась только по оси s.

[COLOR=darkblue]
glBegin(GL_QUADS);

glTexCoord2d (0 / 3, 0 / 1);
glVertex2i (0, 0);

glTexCoord2d(500 / 3, 0 / 1);
glVertex2i(500, 0);

glTexCoord2d(500 / 3, 1 / 1);
glVertex2i(500, 1);

glTexCoord2d(0 / 3, 1 / 1);
glVertex2i(0, 1);

glEnd();
[/COLOR]
В этом случае рисуется узкий горизонтальный прямоугольник (полоска пикселей) в котором очередность тексели совершенно иная, и закономерность не проглядывается.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог