7 Любой пользователь современного текстового редактора скажет, что это утверждение, мягко говоря, не совсем справедливо. - Прим. ред.

Графическое программирование

Растровый шрифт определяется значительно проще, а отображается быстрее (рис. 2.17). Символы шрифта определяются на прямоугольной области и представляют собой блоки битов (bit blocks). Каждый блок задает определенный символ в виде образа из нулей и единиц, которые соответствуют засвеченным и незасвеченным точкам растра. При отображении определенный таким способом символ помещается в буфер кадра с помощью операции побитового переноса (bitblt), которая выполняется очень быстро. Мы рассмотрим эту операцию подробно в главе 9. В составе OpenGL есть функции, которые позволяют прикладной программе напрямую манипулировать содержимым буфера кадра.

Увеличить размер символов растрового шрифта можно только дублированием пикселей, что при большом увеличении приводит к формированию символов довольно "грубой" формы (рис. 2.18). Выполнять какие-либо геометрические преобразования растрового шрифта бессмысленно. Кроме того, поскольку растровые шрифты, как правило, хранятся в постоянной памяти, они не переносятся с компьютера на компьютер.

Символы как штриховых, так и растровых шрифтов формируются из других примитивов, а потому в составе основной библиотеки OpenGL нет специального примитива для формирования текста. Но в составе дополнительной библиотеки GLUT имеется несколько наборов символов (как штриховых, так и растровых), которые определены программно, а следовательно, являются переносимыми. Например, для включения в изображение символа растрового шрифта размером 8x13 пикселей нужно вызвать функцию glutBitmapCharacter( ):

glutBitmapCharacter(GLUT_BITMAP_8_BY_13, с)

Второй аргумент этой функции, с, представляет собой ASCII-код выводимого символа. Символ размещается в текущей позиции растра на поле экрана - это один из параметров, характеризующих текущее состояние графической системы. Изменение значения текущей позиции растра выполняется с помощью разных модификаций функции glRasterPos*. Мы еще вернемся к методам вывода текста на экран в главе 3, где речь пойдет об использовании дисплейных списков.


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