Текст

Большинство графических библиотек поддерживают два вида текста: текст для пояснений (экранный или двумерный текст) и трехмерный текст. Текст для пояснений всегда располагается в плоскости экрана, поэтому его форма не искажается вне зависимости от угла, на который он повернут. Трехмерный текст может быть расположен на любой плоскости в трехмерном пространстве. Его положение и ориентация задаются в мировых координатах. Для текста любого вида необходимо задание таких параметров, как шрифт, отношение высоты к ширине и угол наклона букв, а также положение и направление строки текста. Текст может быть представлен символами двух видов: аппаратными и программными. Программный шрифт строится соответствующими графическими программами, заранее сохраняемыми в памяти компьютера. Построение его занимает больше времени, чем построение символов аппаратного шрифта, но зато форма может быть гораздо более замысловатой. Символы аппаратного шрифта состоят из отдельных отрезков, формирующих буквы.

Приведенный ниже листинг демонстрирует построение текстовой строки АВС с помощью библиотек PHIGS и OpenGL. Символы необходимо сохранить в виде растровых картинок, прежде чем их можно будет использовать в OpenGL, точно так же, как и маркеры.

PHIGS

Pvector3       direction[2] - {

{0.0. 0.0. 0.0}.

{10.0. 10.0. 10.0}}:

/* Направление строки текста задается двумя радиус-векторами. */

Ppoint3         position - {5.5. 5.0. 5.0}:

/* Положение строки текста. */ ptex13(&position.direction."АВС"):

/* Построение строки текста с указанными параметрами. */

OpenGL

GLubyte        а[13] - {0x00. 0x00. 0x3f. 0x60. Oxcf. Oxdb. 0xd3. Oxdd. 0xc3. 0x7e. 0x00.

0x00. 0x00}:

GLubyte b[13] “ {0x00. 0x00. ОхсЗ. ОхсЗ. ОхсЗ. 0xc3. Oxff. ОхсЗ. ОхсЗ. 0xc3. 0x66. 0x3c. 0x18};

GLubyte c[13] - {0x00. 0x00. 0xf3. 0xc7. ОхсЗ. ОхсЗ. 0xc7. Oxfe. 0xc7. ОхсЗ. ОхсЗ. 0xc7. Oxfe}:

/* Растровые символы А. В и С. Растр задается снизу вверх построчно. */

GLsizei          width - 8:

/* Ширина растра в пикселах. */

GLsizei          height - 13:

/* Высота растра в пикселах. */

Glfloat origin_x = 0.0. origin_y-0.0:

/* Задание начала отсчета системы координат растра.

Положительные значения смещают начало отсчета вверх и вправе, отрицательные - вниз и влево. */

GLfloat incre_x - 10.0. incre_y - 0.0:

/* Поправки к положению растра после выведения. */

GLfloat white[3] - {1.0. 1.0. 1.0}:

/* Задание цвета текста. */

GLfloat position[2] - {20.5. 20.5);

/* Координаты символов. */
glPixelStorei(GL_UNPACK_ALIGNMENT.1):

/* Установка режима хранения пикселов, влияющего на работу glBitmap. */ glColor3fv(white):

/* Установка белого цвета символов. */ glRasterPos2fv(position):

/* Установка текущего положения растра. */

glBitmap(width. height. ongin_x. origin_y. incre_x. incre_y. asterisk):

/* Выводит растровую картинку, заданную в последнем аргументе, представляющем собой указатель на эту картинку. Положение и размер растра указываются первыми четырьмя аргументами. */

 

1Метод задания растровых изображений излагается в книге [121].

Смотрите также