![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Текстура на пяти квадратах... [Delphi, OpenGL, Windows]
Кефир87 © (2005-05-27 20:50:00)Вот я тут решил что я самый умный и решил доделать таки скайбокс. Я решил сделать так: Куб без дна (оно мне не нужно т.к. никогда видимо не будет.). И вот (как я уже говорил) я решил что я самый умный и попытался наложить на все это дело всего одну текстуру. То есть центр (треть текстуры) является верхом куба. И все остальные части текстуры накладываются на остальные 4 квадрата. Но получилось отвратительно криво! Текстуры (части текстуры) сошлись только в одном углу, остальные части просто переколбасило. Есть ли способ эту задумку осуществить без раздиления текстуры на несколько файлов? Или может сделать куб треугольниками? А может я просто натупил в коде?...
glBindTexture(GL_TEXTURE_2D, image.point);
glBegin(GL_QUADS);
{TOP}
glTexCoord(1/3, 1/3); glVertex3f(-siz, siz, -siz);
glTexCoord(2/3, 1/3); glVertex3f(siz, siz, -siz);
glTexCoord(2/3, 2/3); glVertex3f(siz, siz, siz);
glTexCoord(1/3, 2/3); glVertex3f(-siz, siz, siz);
{RIGHT}
glTexCoord(2/3, 1/3); glVertex3d(siz, siz, -siz);
glTexCoord(1, 0); glVertex3d(siz, -siz, -siz);
glTexCoord(1, 1); glVertex3d(siz, -siz, siz);
glTexCoord(2/3, 2/3); glVertex3d(siz, siz, siz);
{LEFT}
glTexCoord(0, 0); glVertex3f(-siz, -siz, -siz);
glTexCoord(1/3, 1/3); glVertex3f(-siz, siz, -siz);
glTexCoord(1/3, 2/3); glVertex3f(-siz, siz, siz);
glTexCoord(0, 1); glVertex3f(-siz, -siz, siz);
{BACK}
glTexCoord(1/3, 1/3); glVertex3f(siz, siz, -siz);
glTexCoord(2/3, 1/3); glVertex3f(-siz, siz, -siz);
glTexCoord(1, 0); glVertex3f(-siz, -siz, -siz);
glTexCoord(0, 0); glVertex3f(siz, -siz, -siz);
{FRONT}
glTexCoord(1/3, 2/3); glVertex3f(siz, siz, siz);
glTexCoord(2/3, 2/3); glVertex3f(-siz, siz, siz);
glTexCoord(1, 1); glVertex3f(-siz, -siz, siz);
glTexCoord(0, 1); glVertex3f(siz, -siz, siz);
glEnd;
Кефир87 (2005-05-29 21:12:00) [1]Ну можно конечно. Выходов полно. Но я то решил что я самый умный 8)
П7 (2005-05-28 22:07:00) [2]А не проще ли все квады просто слить в один прямоугольник. Полдучилась бы 1 вытянутая текстура и координаты нормально расчитывались бы и ничего не перекашивалось... (:
Кефир87 (2005-05-28 21:26:00) [3]
> P.S. А зачем ты в одну текстуру то пихнул?
не знаю... Не люблю когда много файлоф... 8)
> Вырезать из файла текстуры нужный тебе кусок и создать для
> него текстуру.
Да. Это идея хорошая. Буду использовать ее в дальнейшем 8) Но вот только как вырезать трапецию из массива? Это ж придется одну сторону трапеции подгонять под другую... Жуть.
> почему бы текстурам не перекривится? если ты на квадрат
> накладываешь текстуру в виде трапеции.
Я это понимаю. Я просто думал что все нормально расчитается. Скажем как трансформ в фотошопе...
keal (2005-05-28 16:01:00) [4]почему бы текстурам не перекривится? если ты на квадрат накладываешь текстуру в виде трапеции.
XProger (2005-05-27 22:46:00) [5]Вырезать из файла текстуры нужный тебе кусок и создать для него текстуру.
Какие плюсы:
+ Не надо париться с текстурными координатами
+ Размер текстуры является степенью двойки
P.S. А зачем ты в одну текстуру то пихнул?
Хидеры графических форматов для трёх текстур максимум полкило скушают.
А переклюючение текстур 5 раз за отрисовку не есть узкое место в твоей программе ;)