![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с поворотом 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);