Только изменение кода. Меняем функцию display:
void CALLBACK display (void) { glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (130, 1, 50, 0); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); //_____________NEW _________ gluLookAt (350, 350, 300, 150, 150, 0, 0, 1, 0); glColor3f(0.0, 0.0, 1); glBegin(GL_POLYGON); glVertex3f(100,100,100); glVertex3f(200,100,100); glVertex3f(200,100,200); glVertex3f(100,100,200); glEnd(); glColor3f(0.0, 1, 0); glBegin(GL_POLYGON); glVertex3f(100,100,100); glVertex3f(100,100,200); glVertex3f(100,200,200); glVertex3f(100,200,100); glEnd(); glColor3f(1, 0, 0); glBegin(GL_POLYGON); glVertex3f(100,100,200); glVertex3f(100,200,200); glVertex3f(200,200,200); glVertex3f(200,100,200); glEnd(); glColor3f(1, 0, 1); glBegin(GL_POLYGON); glVertex3f(100,100,100); glVertex3f(200,100,100); glVertex3f(200,200,100); glVertex3f(100,200,100); glEnd(); // ________END NEW________ glFlush(); }
Рисование в пространстве требует некоторого обьемного мышления. Если его нет, увы , правда у меня тоже нет. Но когда я учился в школе, мой преподаватель по физике при решении задач говорил - "Главное чертеж". В институте так уже не говорили. А жаль.
А Теперь взгляните на код. Поменялась точка зрения в gluLookAt. Это правильно, данные то другие.
GL_POLYGON говорит о том, что из вершин соберутся полигоны. Для полигона(плоскости) необходимо минимум 3 точки. Помните - через любые 3 точки можно провести плоскость. Если вершин будет больше, то необходимо быть осторожным, для получения плоскости необходимо расчитывать координаты. Я отрисовал 4 грани (glBegin.....glEnd) 4 раза вызывается.
Функцией glColor3f я сделал разную заливку граням.
Собирайте, запускайте, очень красивая картинка. Попробуйте поменять точки зрения, работает !!!
Задайте рисование проскостей:
glBegin(GL_POLYGON);
Плоскость создается минимум из 3 точек. При большем количестве будьте осторожны. Помните геометрию !! Только через 3 точки гарантирована плоскость, остальное от лукавого.