Форум: "Игры";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизOpenGL проекции Найти похожие ветки
← →
_[*_0_*]_T_[*_0_*]_ izvrat_* (2006-11-26 02:55) [0]
int ry = 0;
void glInit(){
....
glFrustum(0, 800, 600, 0, 1, 100);
....
}
void glDraw(){
...
glTranslatef(0, 0, -1);
glRotatef(ry, 0, 1, 0);
glBegin(GL_QUADS);
glColor3f(1, 0, 0); glVertex3i(200, 200, 0);
glColor3f(1, 0, 1); glVertex3i(400, 200, 0);
glColor3f(0, 0, 0); glVertex3i(400, 400, 0);
glColor3f(1, 1, 0); glVertex3i(200, 400, 0);
glEnd();
...
}
Хочу просто на месте вращать полигон, а он улетает куда-то вглубь экрана когда к ry добавляю 1. Вроде же не должен?
Или вообще растягиваться начинает...
← →
chemodan (2006-11-26 08:36) [1]
float ry = 0;
void update(){
........
ry+=1;
........
};
void init() {
.........
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(90, 4/3, 0.1, 21);
glTranslated(0,0,-3);
glOrtho(-300, 300, -300, 300, -500, 500);
glViewport(0, 0, Form1.ClientWidth, Form1.ClientHeight);
glMatrixMode(GL_MODELVIEW);
..........
};
//--------------
void Render(){
............
glRotatef(ry, 0, 1, 0);
glColor3f(1,0,0);
glBegin(GL_QUADS);
glVertex3i(0, 0, 0);
glVertex3i(100, 0, 0);
glVertex3i(100, 100, 0);
glVertex3i(0, 100, 0);
glEnd();
...........
};
Так вроде должно работать
← →
@!!ex © (2006-11-26 08:39) [2]
> _[*_0_*]_T_[*_0_*]_ izvrat_* (26.11.06 02:55)
Учитете математику.
Сначала вращаем, потом перемещаем.
← →
_izvrat (2006-11-26 18:02) [3]
> Сначала вращаем, потом перемещаем.
Не ошибаешься случайно?
---------------------------------
при таких раскладаx:
glResize
glFrustum(-1, 1, -1, 1, 1, 100);
glDraw
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0, 0, tz);
glRotatef(rx, 1, 0, 0);
glRotatef(ry, 0, 1, 0);
glBegin(GL_QUADS);
glColor3f(0, 0, 0); glVertex3f(-1, -1, 0);
glColor3f(0, 0, 1); glVertex3f(-1, 1, 0);
glColor3f(0, 0, 0); glVertex3f(1, 1, 0);
glColor3f(0, 0, 1); glVertex3f(1, -1, 0);
glEnd();
получается человеческое вращение :)
а когда в glFrustum увеличиваешь значения - появляются странные эффекты... Почему?
(ex)
glResize
glFrustum(-800, 800, -600, 600, 1, 100);
glDraw
glTranslatef(0, 0, -20);
// glRotatef(rx, 1, 0, 0);
glRotatef(ry, 0, 1, 0);
glBegin(GL_QUADS);
glColor3f(0, 0, 0); glVertex3f(-500, -500, 0);
glColor3f(0, 0, 1); glVertex3f(500, -500, 0);
glColor3f(0, 0, 0); glVertex3f(500, 500, 0);
glColor3f(0, 0, 1); glVertex3f(-500, 500, 0);
glEnd();
При вращении полигон растягивается из глубины. (почему не просто вращается)
← →
Nic © (2006-11-26 18:59) [4]
int ry = 0;
void glInit(){
....
glFrustum(0, 800, 600, 0, 1, 100);
....
}
void glDraw(){
...
glRotatef(ry, 0, 1, 0);
glTranslatef(0, 0, -1);
glBegin(GL_QUADS);
glColor3f(1, 0, 0); glVertex3i(200, 200, 0);
glColor3f(1, 0, 1); glVertex3i(400, 200, 0);
glColor3f(0, 0, 0); glVertex3i(400, 400, 0);
glColor3f(1, 1, 0); glVertex3i(200, 400, 0);
glEnd();
...
}
← →
Nic © (2006-11-26 19:00) [5]Или так:
glPushMatrix();
glRotatef(ry, 0, 1, 0);
glTranslatef(0, 0, -1);
glBegin(GL_QUADS);
glColor3f(1, 0, 0); glVertex3i(200, 200, 0);
glColor3f(1, 0, 1); glVertex3i(400, 200, 0);
glColor3f(0, 0, 0); glVertex3i(400, 400, 0);
glColor3f(1, 1, 0); glVertex3i(200, 400, 0);
glEnd();
glPopMatrx();
← →
_izvrat (2006-11-26 20:26) [6]так вообще не понятно что...
может в другом месте что то не так:
procedure glDraw();
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
// glRotatef(rx, 1, 0, 0);
glRotatef(ry, 0, 1, 0); // хоть так хоть на оборот с транслэйтом
glTranslatef(0, 0, -2);
glBegin(GL_QUADS);
glColor3f(0, 0, 0); glVertex3f(200, 200, 0);
glColor3f(0, 0, 1); glVertex3f(400, 200, 0);
glColor3f(0, 0, 0); glVertex3f(400, 400, 0);
glColor3f(0, 0, 1); glVertex3f(200, 400, 0);
glEnd();
end;
procedure glInit();
begin
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_SMOOTH);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
// glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
end;
procedure glResize(Width, Height : Integer);
begin
if (Height = 0) then
Height := 1;
glViewport(0, 0, Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(0, 800, 600, 0, 1, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
end;
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c