шаблон повторяется от конца одного отрезка линии до начала следующего, пока не встретс гтся команда gl End ( ).

Таблица 2.2. Примеры шаблонов штриховки Шаблон Множитель Результирующая штриховка_

OxFFOO 1 ................................................

OxFFOO 2 .............. .............. ..............

0x5555 1 ....................................

0x3333 2 ........................................

0x7733 1 ..................................................

Напишите программу, которая позволяет пользователю задавать битовый шаблон pattern (в шестнадцатеричной кодировке) и значение множителя factor, после чего рисует штриховые линии по вершинам, определяемым мышью.

Штриховка полигонов Нетрудно также задать шаблон штриховки для заполнения полигона, однако здесь необходимо учесть больше тонкостей. Если шаблон задан, он применяется к заполнению следующего полигона после активизации с помощью команды

glDi sablе(GL_P0LYG0M_STIPPLE)

н до тех нор, пока он не будет деактивирован командой

glDisable(GL_P0LYG0N_STIPPLE), Глава 2. Начальная стадия: рисование фигур Функция

g1 PolygonStipplе(const GLubyte * mask); применяет шаблон штриховки к последующим рисуемым полигонам на основе 128-байтного массива mask[]. Эти 128 байт поставляют биты для битовой маски размером 32 на 32 бита. Шаблон «выкладывается мозаикой» по всему полигону, рисование которого задается обычными командами

gl Beg i n ( GL_P0LYGON ) glVertex* (); ... ;glEnd(); Шаблон задается посредством определения массива

GLubyte mask[]-{0xff. Oxfe. 0x34. ... ): Первые четыре байта задают 32 бита нижнего ряда, слева направо; следующие четыре байта задают следующий ряд, расположенный выше и т.д. На рис. 2.33 показан результат заполнения определенного полигона узором «муха», который взят из «красной книги» OpenGL [Woo, 215].

Рис 2.33. Пример заштрихованного полигона Напишите программу, которая задает интересный шаблон штриховки для полигона и затем позволяет пользователю разместить с помощью мыши последовательность выпуклых многоугольников, каждый из которых заполнен этой штриховкой.


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