Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вращать, например, квадрат без искажений в OpenGL? [Delphi, Windows]


Inspired ©   (2004-06-04 00:59:00) 

Доброе время суток.
Как вращать, например, квадрат без искажений в OpenGL?
Поверхность OpenGL имеет размеры [-1,1]x[-1,1], а обычный экран отношение сторон 3:4.
Мне нужен на экране квадрат, поэтому рисую объект [-3/8,3/8]x[-1/2,1/2]
  glBegin(GL_QUADS);
     glVertex3f(-3/8,-1/2,0);
     glVertex3f(-3/8, 1/2,0);
     glVertex3f( 3/8, 1/2,0);
     glVertex3f( 3/8,-1/2,0);
  glEnd;
При повороте на угол, например, 45 град
  glRotate(45,0,0,-1);
он сплющивается и становится прямоугольником (чем по сути вообще-то и является).
Если изначально рисовать квадрат [-1/2,1/2]х[-1/2,1/2], то он сразу выглядит прямоугольником, а при повороте сплющивается по вертикали.

А нужен обычный правильный вращающийся квардат.
Подскажите, как с этим бороться?


MeF88   (2004-06-09 16:11:00) [1]


> Andr   (09.06.04 14:06) [3]

Лучше уж через glViewport...


Andr   (2004-06-09 14:06:00) [2]

glScalef (0.75, 1, 1);
glrotatef(45,0,0,-1);
glBegin(GL_QUADS);
  glVertex3f(-0.5,-0.5,0);
  glVertex3f(-0.5, 0.5,0);
  glVertex3f( 0.5, 0.5,0);
  glVertex3f( 0.5,-0.5,0);
glEnd;
glScalef (4/3, 1, 1);


Inspired   (2004-06-06 16:28:00) [3]

ОК, попробую, большое спс.


Magikan   (2004-06-04 04:06:00) [4]

Так ты и координаты квадратные задавай. А чтобы квадрат с квадратными (такое вот сочетание слов) координатами не смотрелся прямоугольником, используй вызов функции glViewport.
По этой ссылке есть описание по его использованию
http://www.gamedev.ru/articles/read.shtml?id=20105


Наверх

Титульная страница Поиск, карта сайта Написать письмо