Рис. 4.44. Выравнивание символов в горизонтальной и вертикальной строке
Рис. 4.45. Выравнивание строк символов Еще один возможный атрибут строки символов - это выравнивание. С помощью этого атрибута описывают, как должен располагаться текст относительно определенной опорной точки. Например, отдельные символы могут выравниваться относительно базовых линий или центров символов. На рис. 4.44 показаны характерные положения символов при горизонтальном и вертикальном выравнивании. Можно выравнивать и строки символов, а на рис. 4.45 показаны обычные способы выравнивания для горизонтальных и вертикальных текстовых надписей.
В некоторых графических пакетах существует также атрибут четкости текста. Этот параметр говорит о количестве деталей и особых опциях обработки, которые следует использовать для этой текстовой строки. Для текстовых строк с небольшой четкостью такие атрибуты, как направление текстовой дорожки, опускаются, и для обработки символов в конвейере наблюдения (viewing pipeline) используются более быстрые процедуры.
Наконец, в библиотеках стандартных процедур обработки текста часто предлагаются наборы специальных символов, таких как небольшие кружки или крестики, которые применяются в различных приложениях. Чаще всего эти символы используются как маркеры на сетевых схемах или графиках данных. Атрибутами этих маркировочных символов, как правило, выступают цвет и размер.
ФУНКЦИИ АТРИБУТОВ СИМВОЛОВ В OpenGL
OpenGL предлагает два способа изображения символов. Можно либо разрабатывать шрифт, используя функции битового отображения из корневой библиотеки, либо вызывать стандартные процедуры GLUT для создания отдельных символов. В библиотеке GLUT содержатся функции для изображения предопределенных наборов битовых и векторных символов. Следовательно, атрибуты, которые можно применять к этим символам, - это те атрибуты, которые применяются либо к битовым массивам, либо к прямолинейным отрезкам.
Как для битового, так и для контурного шрифта, цвет изображения определяется текущим состоянием цвета. В общем случае, расстояние между символами и размер самих символов зависит от заданных параметров шрифта (например, GLUT_BITMAP_9_BY_15 или GLUT_ STROKE_MONO_ROMAN). Кроме этого, можно задавать ширину и тип линий контурных символов. Ширина линии задается с помощью функции glLineWidth, а тип линии - с помощью функции glLineStipple. Штриховые шрифты GLUT можно изображать, используя текущие значения атрибутов OpenGL для ширины и типа линии.
Некоторые другие характеристики изображаемого текста можно задавать с помощью функций преобразований, описанных в главе 5. Стандартные процедуры преобразований позволяют изменять масштаб и положение контурных символов GLUT, а также разворачивать их, как в двух-, так и в трехмерном пространстве. Кроме того, трехмерные преобразования изображений (глава 7) можно использовать и для создания других визуальных эффектов.
ЗАЩИТА ОТ НАЛОЖЕНИЯ
Прямолинейные отрезки и другие графические примитивы, полученные с помощью растровых алгоритмов, которые обсуждались в главе 3, как правило, бывают зубчатыми (или ступенчатыми), поскольку при дискретизации значения координат точек объекта оцифровываются, в результате чего получаются дискретные целочисленные значения координат пикселей. Такое искажение информации, вызванное процессом дискретизации с небольшой частотой (выборка с недостаточной частотой), называется наложением (aliasing). Внешний вид изображаемых растровых линий можно улучшить, воспользовавшись методами защиты от наложения (antialiasing), которые компенсируют процесс выборки с недостаточной частотой.