Chapter 4
Полезные и бесполезные мелочи
4.8 Трафарет I
Зачем это может понадобиться, я не очень представляю.
Рисовать прерывистую линию вы уже умеете. Трафарет -
это то же самое, только для многоугольников. Вы разрешаете тест трафарета
командой glEnable(GL_POLYGON_STIPPLE). Аналогично,
как и в случае с линиями, нужно загружать массив, который задает битовую
маску. Размер трафарета строго оговорен - 32х32 пикселя. 32х32 равняется
1024. 1024 делим на восемь бит, получаем 128 байт, т.е., чтобы закодировать
трафарет, нужен массив из 128-ми байт. Тут уже, как в случае с линиями, калькулятором
не посчитаешь. Поэтому я написал утилиту - pcx_2bpp,
которая конвертирует
pcx-файл в формате два бита на пиксель в массив на языке Си. Запускается она
так:
>pcx_2bpp filename.pcx >array.c
Утилиту можете взять на моем сервере в архиве с исходными текстами программ(см. приложение А).
Знак "больше" означает перенаправление стандартного вывода в файл array.c.
Эта утилита абсолютно переносима. Нарисовав в каком-нибудь графическом пакете
рисунок в формате 32х32х2bpp, сохраните его и обработайте моей утилитой.
Получите массив, который вставьте в свою программу. В фунции main добавьте
следующий код:
glEnable(GL_POLYGON_STIPPLE);
glPolygonStipple(array);
|