Поделиться через


Шрифты и текст (OpenGL)

Реализация OpenGL корпорацией Майкрософт в Windows поддерживает графику GDI в окне OpenGL с одним буфером. Он не поддерживает графику GDI в окне OpenGL с двойной буферизацией. Таким образом, можно вызывать только стандартные функции шрифта И текста GDI для рисования текста в окне OpenGL с одним буфером; Эти функции нельзя вызывать для рисования текста в окне OpenGL с двойной буферизацией.

Существует обходной путь для этого ограничения текста в окнах с двойной буферизацией: создание списков отображения OpenGL для растровых изображений символов, а затем выполнение этих списков отображения для рисования символов. В этом процессе есть три main шага:

  1. Выберите шрифт для контекста устройства, задав нужные свойства шрифта.
  2. Создайте набор списков отображения точечных рисунков на основе глифов в шрифте контекста устройства— по одному отображаемого списка для каждого глифа, который будет рисовать приложением.
  3. Нарисуйте каждый глиф в строке, используя эти списки отображения точечных рисунков.

Чтобы создать отображаемые списки, вызовите функции wglUseFontBitmaps и wglUseFontOutlines . Чтобы нарисовать символы в строке с помощью этих отображаемых списков, вызовите glCallLists.

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

Функции шрифта и текста