153 lines
1.9 KiB
C
153 lines
1.9 KiB
C
#include <stdlib.h>
|
|
|
|
|
|
/* подключаем библиотеку GLUT */
|
|
|
|
#include <GL/glut.h>
|
|
|
|
|
|
|
|
/* начальная ширина и высота окна */
|
|
|
|
GLint Width = 512, Height = 512;
|
|
|
|
|
|
|
|
/* размер куба */
|
|
|
|
const int CubeSize = 200;
|
|
|
|
|
|
|
|
/* эта функция управляет всем выводом на экран */
|
|
|
|
void Display(void)
|
|
|
|
{
|
|
|
|
int left, right, top, bottom;
|
|
|
|
|
|
|
|
left = (Width - CubeSize) / 2;
|
|
|
|
right = left + CubeSize;
|
|
|
|
bottom = (Height - CubeSize) / 2;
|
|
|
|
top = bottom + CubeSize;
|
|
|
|
|
|
|
|
glClearColor(0, 0, 0, 1);
|
|
|
|
glClear(GL_COLOR_BUFFER_BIT);
|
|
|
|
|
|
|
|
glColor3ub(255,0,0);
|
|
|
|
glBegin(GL_QUADS);
|
|
|
|
glVertex2f(left,bottom);
|
|
|
|
glVertex2f(left,top);
|
|
|
|
glVertex2f(right,top);
|
|
|
|
glVertex2f(right,bottom);
|
|
|
|
glEnd();
|
|
|
|
|
|
|
|
glFinish();
|
|
|
|
}
|
|
|
|
/* Функция вызывается при изменении размеров окна */
|
|
|
|
void Reshape(GLint w, GLint h)
|
|
|
|
{
|
|
|
|
Width = w;
|
|
|
|
Height = h;
|
|
|
|
|
|
|
|
/* устанавливаем размеры области отображения */
|
|
|
|
glViewport(0, 0, w, h);
|
|
|
|
|
|
|
|
/* ортографическая проекция */
|
|
|
|
glMatrixMode(GL_PROJECTION);
|
|
|
|
glLoadIdentity();
|
|
|
|
glOrtho(0, w, 0, h, -1.0, 1.0);
|
|
|
|
|
|
|
|
glMatrixMode(GL_MODELVIEW);
|
|
|
|
glLoadIdentity();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Функция обрабатывает сообщения от клавиатуры */
|
|
|
|
void
|
|
|
|
Keyboard( unsigned char key, int x, int y )
|
|
|
|
{
|
|
|
|
#define ESCAPE '\033'
|
|
|
|
|
|
|
|
if( key == ESCAPE )
|
|
|
|
exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Главный цикл приложения */
|
|
|
|
main(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
glutInit(&argc, argv);
|
|
|
|
glutInitDisplayMode(GLUT_RGB);
|
|
|
|
glutInitWindowSize(Width, Height);
|
|
|
|
glutCreateWindow("Red square example");
|
|
|
|
|
|
|
|
glutDisplayFunc(Display);
|
|
|
|
glutReshapeFunc(Reshape);
|
|
|
|
glutKeyboardFunc(Keyboard);
|
|
|
|
|
|
|
|
glutMainLoop();
|
|
|
|
}
|