Будем работать со старым.
#include "afxwin.h" #include "GL/gl.h" #include "GL/glu.h" #include "GL/glaux.h" void myinit(void); void CALLBACK display(void); void myinit (void) { } void CALLBACK display (void) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective (130, 1, 50, 0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(150, 150, 150, 0, 0, 0, 0, 100, 0); glColor3f(1,0,0); glBegin(GL_LINE_LOOP); glColor3f(1,0,0); glVertex3f(0, 0, 0); glVertex3f(200, 0, 0); glEnd(); glBegin(GL_LINE_LOOP); glColor3f(0,1,0); glVertex3f(0, 0, 0); glVertex3f(0, 200, 0); glEnd(); glBegin(GL_LINE_LOOP); glColor3f(0,0,1); glVertex3f(0, 0, 0); glVertex3f(0, 0, 200); glEnd(); glFlush(); } int main(int argc, char** argv) { auxInitDisplayMode (AUX_SINGLE | AUX_RGB); auxInitPosition (0, 0, 500, 500); auxInitWindow ("1-6"); myinit(); auxMainLoop(display); return(0); }
Итак, что добавилось glMatrixMode (GL_PROJECTION); говорит о том, что команды относятся к проекту.
glLoadIdentity(); считывает текущую матрицу.
gluPerspective (130, 1, 50, 0); Настройка перспективы просмотра. Нам сейчас интересны первые два параметра. Первый параметр это охват в градусах от 0 до 180. Можете воспринимать его как обьектив на фотоаппарате. Либо все но мелкое , либо большое но одно. Создав и запустив проект, поменяейте это параметр, вы увидите изменение изображения больше-меньше. Посмотрите на рисунок ниже. Второй параметр это угол поворота по оси Y. Да бог с ним. Главное первый параметр.
glMatrixMode (GL_MODELVIEW); говорит о том, что работы будет теперь просмотром, а не проектом. Это важно. Дело в том , что проект и просмотр имеют разницу. Зачастую необходимо поворачивать фигуры друг относительно друга и т.п. это делается в разных матрицах и т.д. Ну это на примерах понятнее будет надеюсь. А пока факт. Перспективу для проекта, а взгляд для просмотра.
gluLookAt (150, 150, 150, 0, 0, 0, 0, 100, 0); Устанавливает точку наблюдения, камеру. Первые параметры откуда (x,y,z) и куда (x,y,z). Это пока главное.
Поэкспениментируйте с первыми тремя или вторыми тремя параметрами. Угол взгляда будет меняться. Лучше менять параметры на 2 - 5 единиц и у одной координаты, чтобы не потеряться.
Установите перспективу:
glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(130, 1, 50, 0);
Угол взгляда:
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(150, 150, 150, 0, 0, 0, 0, 100, 0);