Народный учебник по OpenGL


Урок 13. Растровые шрифты - часть 3


 

GLuint  base;      // База списка отображения для фонта

GLfloat  cnt1;     // Первый счетчик для передвижения и закрашивания текста

GLfloat  cnt2;     // Второй счетчик для передвижения и закрашивания текста

 

bool  keys[256];      // Массив для работы с клавиатурой

bool  active=TRUE;    // Флаг активации окна, по умолчанию = TRUE

bool  fullscreen=TRUE;// Флаг полноэкранного режима

 

LRESULT  CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);  // Объявление WndProc

В следующей секции кода происходит построение шрифта. Это наиболее трудная часть кода. Объявление 'HFONT font'  задает шрифт в Windows.


Затем мы определяем base. Мы создаем группу из 96 списков отображения, используя glGenLists(96). После того, как списки отображения созданы, переменная base будет содержать номер первого списка.

 

GLvoid BuildFont(GLvoid)  // Построение нашего растрового шрифта

{

  HFONT  font;            // Идентификатор фонта

 

  base = glGenLists(96);  // Выделим место для 96 символов ( НОВОЕ )

 

Теперь позабавимся. Мы собираемся создать наш шрифт. Мы начинаем, задавая размер шрифта. Вы заметили, что это отрицательное число. Вставляя минус, мы сообщаем Windows, что надо найти нам шрифт, основанный на высоте СИМВОЛОВ. Если мы используем положительное число, мы выбираем шрифт, основанный на высоте ЯЧЕЙКИ.

 

font = CreateFont(  -24,        // Высота фонта ( НОВОЕ )

 

Затем мы определяем ширину ячейки. Вы увидите, что я установил ее в 0. При помощи установки значения в 0, Windows будет использовать значение по умолчанию. Вы можете поиграть с этим значением, если Вы хотите. Сделайте шрифт широким, и т.д.

 

        0,        // Ширина фонта

 

Угол отношения (Angle of Escapement) позволяет вращать шрифт. К сожалению, это - не очень полезная возможность. Исключая 0, 90, 180, и 270 градусов, у шрифта будет обрезаться то, что не попало внутрь невидимой квадратной границы. Угол наклона (Orientation Angle), цитируя справку MSDN, определяет угол, в десятых долях градуса, между базовой линией символа и осью X устройства. К сожалению, я не имею понятия о том, что это означает :(.




Начало  Назад  Вперед



Книжный магазин