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

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

проблема с поворотом 2d объекта с текстурой в Opengl [Delphi]


COMRAD_GREMLIN ©   (2006-04-30 14:47:00) 

Добрый день х)
Мне нужно повернуть объект с текстурой, однако поворот происходит не корректно. Он поворачивает текстуру. Однако она перемещается(меняется точка наблюдения). Я так понимаю, что проблема в GlTranslateF, однако какие значения нужно указывать в этой процедуре?
Зарание спасибо .)

   glMatrixMode(GL_projection);
   glLoadIdentity ;
   glortho(0,Form1.ClientWidth,form1.Clientheight,0,-800,800);
// ClientWidth и ClientHeight - 640x480;
   GlMatrixMode(GL_TEXTURE);
   GlLoadIdentity;
   gldisable(GL_depth_TEST);
   glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
   GlPushMatrix;
   angle:=30;
{    GlTranslateF(0,0,0); вопрос здесь - какое значение нужно указывать в GlTranslateF?}
   GlRotateF(angle,0,0,1);
   GlBindTexture(gl_texture_2d,man);
   glBegin (GL_QUADS);
     glTexCoord2d (0.0, 0.0);  glVertex2f (100,100);
     glTexCoord2d (1.0, 0.0); glVertex2f (164,100);
     glTexCoord2d (1.0, 1.0); glVertex2f (164,164);
     glTexCoord2d (0.0, 1.0); glVertex2f (100,164);
   glEnd;
   GlPopMatrix;


COMRAD_GREMLIN   (2006-04-30 16:57:00) [1]

Спасибо огромное, теперь всё понятно :)


XProger   (2006-04-30 16:40:00) [2]

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  glOrtho(0, Form1.ClientWidth, Form1.Clientheight, 0, 0, 1);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  glDisable(GL_DEPTH_TEST);
  glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  glPushMatrix;
  Angle := 30;
  glTranslatef(132, 132, 0);
  glRotatef(Angle, 0, 0, 1);
  glBindTexture(GL_TEXTURE_2D, Man);
  glBegin(GL_QUADS);
    glTexCoord2f(0, 0); glVertex2f(-32, -32);
    glTexCoord2f(1, 0); glVertex2f( 32, -32);
    glTexCoord2f(1, 1); glVertex2f( 32,  32);
    glTexCoord2f(0, 1); glVertex2f(-32,  32);
  glEnd;
  glPopMatrix;


COMRAD_GREMLIN   (2006-04-30 16:07:00) [3]

Спасибо, поворачивать стал нормально :) Вот только теперь ездит вокруг своей оси, в смысле перемещается сам по x и по y с каждым поворотом ( не стоит на одном месте, поворачиваясь вокруг своей оси ) Т___Т


XProger   (2006-04-30 15:04:00) [4]

GlMatrixMode(GL_TEXTURE);
заменить на
 glMatrixMode(GL_MODELVIEW);


Наверх

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