glutDi splayFunc(myDi splay): // register redraw function // регистрируем функцию перерисовки (обновления)

mylnitO:

gl utMainLoopO: // go into a perpetual loop // входим в бесконечный цикл

}

Данный код можно было бы для удобства инкапсулировать в подпрограмму drawLinelnt:

void drawLineInt(GLint xl. GLint yl. GLint x2. GLint y2) {

glBegin(GL_LINES):

glVertex2i(xl. yl): glVertex2i(x2. y2):

glEndO:

}

Альтернативную подпрограмму, drawLineFloatO, можно было бы реализовать аналогично. (Как?)

Френсис Хилл

Если между командами glBegin(GL_LINES) и glEndO задано больше двух вершин, то они принимаются парами и каждая пара соединяется отдельным отрезком прямой. Поле для игры в «крестики-нолики» (tic-tac-toe board), приведенное на рис. 2.9, а, можно было бы нарисовать с помощью следующих команд:

g1 Beg i n(GL_LINES):

glVertex2i(10. 20): // first horizontal line // первая горизонтальная линия

glVertex2i(40. 20)

glVertex2i(20. 10): // first vertical line // первая вертикальная линия

glVertex2i(20. 40):

four more calls to glVertex2i() here for the other two lines // здесь еще четыре вызова glVertex2i() для двух // оставшихся прямых glEndO: glFlushO:

OpenGL предлагает средства для задания атрибутов линий. Цвет линии устанавливается точно так же, как и для точек, с использованием функции glColor3f О. На рис. 2.9, б показано применение утолщенных линий, они установлены с помощью команды glLineWidth(4.0). По умолчанию толщина равна 1,0. На рис. 2.9, в показаны пунктирные линии (из точек или из штрихов). Подробности штрихования приведены в тематическом задании 2.5 в конце данной главы.

Глава 2. Начальная стадия: рисование фигур

2.3.1. Рисование ломаных линий и полигонов Напомним (из главы 1), что ломаной линией (polyline) называется совокупность отрезков прямых, соединенных своими концами. Ломаная описывается упорядоченным списком точек, как в равенстве:

Po = (*о> У0)« Pi= У^'-Рп " (*„. УпУ (2-2> В OpenGL ломаная называется «полосой линий» («line strip») и рисуется посредством задания вершин в нужном порядке, между командами glBegin(GL_LINE_STRIP) и glEndO. К примеру, код


⇐ Предыдущая| |Следующая ⇒