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


Урок 15. Текстурные шрифты - часть 2


 

GLuint  texture[1]; // Одна текстура ( НОВОЕ )

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

 

GLfloat   rot;      // Используется для вращения текста

 

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

 

Следующий раздел кода претерпел незначительные изменения. В этом уроке я собираюсь использовать wingdings шрифт, для того чтобы отобразить объект в виде черепа и двух скрещенных костей под ним (эмблема смерти). Если Вы захотите вывести текст вместо этого, Вы можете оставить код таким же, как это было в уроке 14, или замените шрифт на ваш собственный.


Может быть кто-то уже задавался вопросом, как использовать wingdings шрифт. Это тоже является причиной, по которой я не использую стандартный шрифт. wingdings – СПЕЦИАЛЬНЫЙ шрифт, и требует некоторых модификаций, чтобы заставить программу работать с ним. При этом надо не просто сообщить Windows, чтобы Вы будете использовать wingdings шрифт. Если Вы изменяете, название шрифта на wingdings, Вы увидите, что шрифт не будет выбран. Вы должны сообщить Windows, что шрифт является специальным шрифтом, и не стандартным символьным шрифтом. Но об этом позже.

 

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

{

  GLYPHMETRICSFLOAT  gmf[256]; // Адрес буфера для хранения шрифта

  HFONT  font;                 // ID шрифта в Windows

 

  base = glGenLists(256);      // Храним 256 символов

  font = CreateFont(  -12,     // Высота фонта

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

        0,        // Угол отношения

        0,        // Угол наклона

        FW_BOLD,  // Ширина шрифта

        FALSE,    // Курсив

        FALSE,    // Подчеркивание

        FALSE,    // Перечеркивание

 

Вот она волшебная строка! Вместо того чтобы использовать ANSI_CHARSET, как мы делали в уроке 14, мы используем SYMBOL_CHARSET. Это говорит Windows, что шрифт, который мы строим - не обычный шрифт, составленный из букв. Специальный шрифт обычно составлен из крошечных картинок (символов). Если Вы забудете изменить эту строку, wingdings, webdings и любой другой специальный шрифт, который Вы можете пробовать использовать, не будет работать.




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



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