glClearColor (0.0, 0.0, 1.0, 1.0)

/* Цвет окна дисплея выбран синим. */ glMatrixMode (GL_PROJECTION) ; gluOrtho2D (0.0, 200.0, 0.0, 150.0);

}

void displayFcn (void) {

glClear (GL_COLOR_BUFFER_BIT);

/* Очищается окно на экране дисплея. */

glColor3f (1.0, 0.0, 0.0); // Заполнение красным цветом.

}

void winReshapeFcn (GLint newWidth, GLint newHeight) {

/* Обновление точки обзора и проекционных параметров. */

glViewport (0, 0, newWidth, newHeight); glMatrixMode (GL_PROJECTION); glLoadldentity ( );

gluOrtho2D (0.0, GLdouble (newWidth), 0.0,

GLdouble (newHeight));

/* Обновления параметров размера окна. */ winWidth = newWidth; winHeight = newHeight;

}

/* Отображается красный квадрат с заданной длиной сторон. */

void fillSquare (GLint button, GLint action, GLint xMouse,

GLint yMouse)

{

GLint xl, yl, x2, y2;

/* Левая кнопка мыши используется для выбора положения

* левого нижнего угла эхрана.

*/

if (button == GLUT_LEFT_BUTTON && action == GLUT_DOWN)

{

xl = xMouse;

yl = winHeight - yMouse; x2 = xl + edgeLength; y2 = yl + edgeLength; glRecti (xl, yl, x2, y2);

)

else

if (button == GLUT_RIGHT_BUTTON)

/* Правая кнопка мыши используется для выхода из

* программы.

*/

exit (0); glFlush ( );

>

/* Используйте клавиши <2>, <3> и <4>, чтобы увеличить

* квадрат.

*/

void enlargeSquare

(GLubyte sizeFactor, GLint xMouse, GLint yMouse) { switch (sizeFactor)

{

case '2' :

edgeLength *= 2;

break; case '3' :

edgeLength *= 3; break; case '4' :

edgeLength *= 4; break; default: break;

}

}

/* Используйте функциональные клавиши <F2> и <F4>, чтобы

* изменить масштаб с коэффициентом 1/2 и 1/4.

*/

void reduceSquare (GLint reductionKey, GLint xMouse,

GLint yMouse)

{

switch (reductionKey)

{

case GLUT_KEY_F2: edgeLength /= 2; break; case GLUT_KEY_F3: edgeLength /= 4; break; default: break;

}

}

void main (int argc, char** argv)

{

glutlnit (Sargc, argv);

glutlnitDisplayMode (GLUT_SINGLE | GLUT_RGB) ; glutlnitWindowPosition (100, 100); glutlnitWindowSize (winWidth, winHeight); glutCreateWindow ("Квадраты разного размер"); init ( ) ;

glutDisplayFunc (displayFcn); glutReshapeFunc (winReshapeFcn); glutMouseFunc (fillSquare); glutKeyboardFunc (enlargeSquare); glutSpecialFunc (reduceSquare); glutMainLoop ( );

}

ФУНКЦИИ GLUT (ПЛАНШЕТ)

Обычно активизация планшета выполняется, когда курсор мыши находится в окне дисплея. Далее, используя приведенную команду, записывается событие для ввода с планшета

glutTabletButtonFunc (tabletFcn); Аргументы вызываемой функции подобны тем, что используются при работе с мышью.

void tabletFcn (GLint tabletButton, GLint action,

GLint xTablet, GLint yTablet)

Клавиша планшета обозначается целым идентификатором, таким как 1, 2, 3 и т.д. Действие при нажатии клавиши задается с помощью GLUT_UP или GLUT_DOWN. Возвращенные значения xTablet и yTablet являются планшетными координатами. Число доступных кнопок планшета можно определить с помощью приведенной ниже команды.

glutDeviceGet (GLUT_NUM_TABLET_BUTTONS);


⇐ вернуться назад | | далее ⇒