glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Верхправо
glNormal3f( 0.0f,-1.0f, 0.0f);// Нижняягрань
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Верхправо
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Верхлево
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Низлево
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Низправо
glNormal3f( 1.0f, 0.0f, 0.0f);// Правая грань
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Низ право
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Верх право
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Верх лево
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Низлево
glNormal3f(-1.0f, 0.0f, 0.0f);// Леваягрань
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Низлево
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Низправо
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Верхправо
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); // Верхлево
glEnd();
glPopMatrix();// вызов матрицы
rotx+=0.2;//вращение по оси Х
roty+=0.1;//вращение по оси Y
rotz+=0.3;//вращение по оси Z
glutSwapBuffers();
}
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);// параметрыперспективы
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (0.0, 1.5, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);// точкакамеры
}
void keyboard (unsigned char key, int x, int y)//обработчикклавиатуры
{
switch (key) {
case 27:
exit(0);
break;
case 'e':
glEnable(GL_BLEND);//применениеальфа-смешивания
break;
case 'd':
glDisable(GL_BLEND);//отключениеальфасмешивания
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);//режимэкрана
glutInitWindowPosition (0, 0);//позицияокна
glutCreateWindow ("DroY Cube (c) 2003 Press 'ESC' to exit");
init ();
glutFullScreen();//полноэкранныйрежим
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutIdleFunc(display);
glutMainLoop();
return 0;
}
1. "Интерактивная компьютерная графика. Вводный курс на базе OpenGL", Эдвард Эйнджел.
2. OpenGL. Официальное руководство программиста Ву Мейсон, Нейдер Джеки, Девис Том, Шрайнер Дейв
3. Тарасов И.А. «Основы программирования OpenGL: учебный курс».
4. Тихомиров Ю. «Программирование трёхмерной графики».
5. http://www.gamedev.ru Основы OpenGL