}
/*---------.....-------..........*/
void myinit() {
g1Viewport(0,0,ww,wh);
/* Установка размеров отсекающей рамки в соответствии с размерами окна. Такая настройка позволяет избежать масштабирования координат объектов при изменении размеров окна. */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, (GLdouble)ww , 0.0, (GLdouble)wh , -1.0, 1.0);
/* Установка черного цвета фона и очистка окна */ glClearColor (0.0, 0.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); glFlush();
/* Регистрация функции обработки события изменения размеров окна */ glutReshapeFunc(myReshape);
}
/* ------------------------------- */
void mouse(int btn, int state, int x, int y) {
if(btn==GLUT_RIGHT_BUTTON && state==GLUT_DOWN) exit();
}
A.5. Программа вычерчивания квадрата
/*-------........-...........- */
/* Функция отображения.
Библиотека GLUT 3.0 требует, чтобы такая функция была обязательно определена в программе.*/
void display() {}
/*............................... */
int main(int arge, char** argv) {
glutlnit(Sarge,argv);
glutlnitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutCreateWindow( "square"]"; myinit ();
glutReshapeFunc (myReshape); glutMouseFunc (mouse); glutMotionFunc(drawSquare); glutDisplayFunc(display);
glutMainLoop();
}
/*------- Конец файла -------*/
A.6. Программа рисования
/* Простая программа, формирующая на экране текст, отрезки прямых, треугольники, прямоугольники и точки */
idefine NULL О Idefine LINE 1 idefine RECTANGLE 2 Idefine TRIANGLE 3 Idefine POINTS 4 Idefine TEXT 5
linclude <GL/glut.h>
void mouse(int, int, int, int);
void key(unsigned char, int, int);
void display();
void drawSquare(int, int);
void myReshape(GLsizei, GLsizei);
void myinit();
void screen_box(int, int, int); void rightjnenu(int); void middlejnenu(int); void colorjnenu(int);
Приложение А. Демонстрационные программы
void pixel_menu(int); void fill_menu(int); int pick(int, int);
/* Глобальные переменные */
GLsizei wh = 500, ww GLfloat size =3.0; int draw_mode = 0; int rx, ry;
500; /* исходные размеры окна */