Основы программирования OpenGL в Borland С+Builder и Delphi


Параллелепипед


Не знаю, заметили вы или нет, но GLU не позволяет создавать параллелепипеды. Давайте это исправим: напишем процедуру, рисующую параллелепипед.

С++

 void piped(GLfloat a, GLfloat b, GLfloat c)

{

glShadeModel(GL_FLAT);

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);

glBegin(GL_QUAD_STRIP);

glVertex3f(-a/2,-b/2,-c/2);

glVertex3f(-a/2,-b/2, c/2);

glVertex3f(-a/2, b/2,-c/2);

glVertex3f(-a/2, b/2, c/2);

glVertex3f( a/2, b/2,-c/2);

glVertex3f( a/2, b/2, c/2);

glVertex3f( a/2,-b/2,-c/2);

glVertex3f( a/2,-b/2, c/2);

glVertex3f(-a/2,-b/2,-c/2);

glVertex3f(-a/2,-b/2, c/2);

glEnd();

glBegin(GL_QUADS);

glVertex3f(-a/2,-b/2, c/2);

glVertex3f(-a/2, b/2, c/2);

glVertex3f( a/2, b/2, c/2);

glVertex3f( a/2,-b/2, c/2);

glVertex3f(-a/2,-b/2,-c/2);

glVertex3f(-a/2, b/2,-c/2);

glVertex3f( a/2, b/2,-c/2);

glVertex3f( a/2,-b/2,-c/2);

glEnd(); 

}

Delphi

 procedure piped(a,b,c:GLfloat);

begin

glShadeModel(GL_FLAT);

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);

glBegin(GL_QUAD_STRIP);

glVertex3f(-a/2,-b/2,-c/2);

glVertex3f(-a/2,-b/2, c/2);

glVertex3f(-a/2, b/2,-c/2);

glVertex3f(-a/2, b/2, c/2);

glVertex3f( a/2, b/2,-c/2);

glVertex3f( a/2, b/2, c/2);

glVertex3f( a/2,-b/2,-c/2);

glVertex3f( a/2,-b/2, c/2);

glVertex3f(-a/2,-b/2,-c/2);

glVertex3f(-a/2,-b/2, c/2);

glEnd;

glBegin(GL_QUADS);

glVertex3f(-a/2,-b/2, c/2);

glVertex3f(-a/2, b/2, c/2);

glVertex3f( a/2, b/2, c/2);

glVertex3f( a/2,-b/2, c/2);

glVertex3f(-a/2,-b/2,-c/2);

glVertex3f(-a/2, b/2,-c/2);

glVertex3f( a/2, b/2,-c/2);

glVertex3f( a/2,-b/2,-c/2);

glEnd;

end;

Можно проверять!

glOrtho вызовем также, как и в примере со сферой: glOrtho(-5,5, -5,5, 1,12).

А в Draw напишем следующее:

С++, Delphi

 glColor3f(0.6,0.7,0.9);

glPushMatrix;

glRotatef(10, 0,0,1);

glRotatef(25, 0,1,0);

glRotatef(20, 1,0,0);

piped(5,1.2,3.5);

glPopMatrix;

И получим картинку:




- Начало -  - Назад -  - Вперед -