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


функция wglUseFontOutlinesW (wingdi.h)

Функция wglUseFontOutlines создает набор списков отображения, по одному для каждого глифа выбранного шрифта структуры контекста устройства для использования с текущим контекстом отрисовки. Списки отображения используются для рисования 3-D символов шрифтов TrueType. Каждый список отображения описывает контур глифа в координатах с плавающей запятой.

Запуск глифов начинается с шрифта указанного контекста устройства. Квадратный размер шрифта, размер исходной сетки исходного контура шрифта, из которого установлен шрифт, сопоставляется с 1,0 в координатах x и y в списках отображения. Параметр экструзии задает глубину шрифта в направлении z.

Thelpgmfparameter возвращает структуру GLYPHMETRICSFLOAT, содержащую сведения о размещении и ориентации каждого глифа в ячейке символов.

Синтаксис

BOOL wglUseFontOutlinesW(
  HDC                 unnamedParam1,
  DWORD               unnamedParam2,
  DWORD               unnamedParam3,
  DWORD               unnamedParam4,
  FLOAT               unnamedParam5,
  FLOAT               unnamedParam6,
  int                 unnamedParam7,
  LPGLYPHMETRICSFLOAT unnamedParam8
);

Параметры

unnamedParam1

Указывает контекст устройства с нужным шрифтом структуры. Шрифт структуры hdc используется для создания списков отображения в текущем контексте отрисовки.

unnamedParam2

Указывает первый из набора глифов, которые образуют списки отображения структуры шрифта.

unnamedParam3

Указывает количество глифов в наборе глифов, используемых для формирования списков отображения структуры шрифта. Функция wglUseFontOutlines создает списки отображения счетчиков, один список отображения для каждого глифа в наборе глифов.

unnamedParam4

Задает начальный список отображения.

unnamedParam5

Задает максимальное отклонение хорда от исходных контуров. Если отклонение равно нулю, то аккордное отклонение эквивалентно одной единице конструктора исходного шрифта. Значение отклонения должно быть равно или больше 0.

unnamedParam6

Указывает, сколько шрифта вычислено в отрицательном z направлении. Значение должно быть равно или больше 0. Если экструзии равно 0, отображаемые списки не выводятся.

unnamedParam7

Задает формат, WGL_FONT_LINES или WGL_FONT_POLYGONS, используемый в списках отображения. Если формата WGL_FONT_LINES, функция wglUseFontOutline s создает шрифты с сегментами строк. Если формат WGL_FONT_POLYGONS, wglUseFontOutlines создает шрифты с многоугольниками.

unnamedParam8

Указывает на массив счетчиков GLYPHMETRICSFLOAT структуры, которые должны получать метрики глифов. Если lpgmfNULL, метрики глифа не возвращаются.

Возвращаемое значение

После успешного выполнения функции возвращаемое значение TRUE.

Если функция завершается ошибкой, возвращаемое значение FALSE, и списки отображения не создаются. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Функция wglUseFontOutlines определяет глифы шрифта структуры со списками отображения в текущем контексте отрисовки. Функция wglUseFontOutlines работает только с шрифтами TrueType; Шрифты росчерка и растра не поддерживаются.

Каждый список отображения состоит из сегментов строк или многоугольников и имеет уникальный номер идентификации, начиная с номера listBase.

Функция wglUseFontOutlines приближает контуры глифов путем деления квадратной кривой B-spline контура на сегменты линий, пока расстояние между контуром и интерполированной средней точкой находится в пределах значения, указанного отклонением. Это окончательный формат, используемый при формата WGL_FONT_LINES. При указании WGL_FONT_OUTLINES созданные списки отображения не содержат нормальных данных; Таким образом, освещение не работает должным образом. Чтобы получить правильное освещение линий WGL_FONT_POLYGONS и задать glPolygonMode( GL_FRONT, GL_LINE). При указании формата как WGL_FONT_POLYGONS контуры дополнительно тесселлируются в отдельные треугольники, вентиляторы треугольников, полосы треугольников или четырехсторонние полосы для создания поверхности каждого глифа. С WGL_FONT_POLYGONS созданные списки отображения вызывают glFrontFace(GL_CW ) или glFrontFace( GL_CCW ); Таким образом, текущее значение переднего лица может быть изменено. Для лучшего внешнего вида текста с WGL_FONT_POLYGONS приглупите задние лица следующим образом:

glCullFace(GL_BACK); 
glEnable(GL_CULL_FACE);

Структура GLYPHMETRICSFLOAT содержит сведения о размещении и ориентации каждого глифа в ячейке символов. Параметр lpgmf представляет собой массив структур GLYPHMETRICSFLOAT, содержащих весь набор глифов для шрифта. Каждый список отображения заканчивается переводом, указанным с gmfCellIncX и gmfCellIncY членов соответствующей структуры GLYPHMETRICSFLOAT. Перевод позволяет рисованию последовательных символов в естественном направлении с одним вызовом glCallLists.

примечание с помощью OpenGL для Windows, нельзя вызывать GDI к контексту устройства при двойном буферизации формата пикселей. Это ограничение можно обойти с помощью wglUseFontOutlines и wglUseFontBitmapsпри использовании контекстов устройства с двойной буферизацией.
 

Примеры

В следующем примере кода показано, как нарисовать текст с помощью wglUseFontOutlines.

HDC    hdc;  // A TrueType font has already been selected  
HGLRC  hglrc; 
GLYPHMETRICSFLOAT agmf[256]; 
 
// Make hglrc the calling thread's current rendering context  
wglMakeCurrent(hdc, hglrc); 
 
// create display lists for glyphs 0 through 255 with 0.1 extrusion  
// and default deviation. The display list numbering starts at 1000  
// (it could be any number)  
wglUseFontOutlines(hdc, 0, 255, 1000, 0.0f, 0.1f,  
            WGL_FONT_POLYGONS, &agmf); 
 
// Set up transformation to draw the string  
glLoadIdentity(); 
glTranslate(0.0f, 0.0f, -5.0f) 
glScalef(2.0f, 2.0f, 2.0f); 
 
// Display a string  
glListBase(1000); // Indicates the start of display lists for the glyphs  
// Draw the characters in a string  
glCallLists(24, GL_UNSIGNED_BYTE, "Hello Windows OpenGL World.");

Заметка

Заголовок wingdi.h определяет wglUseFontOutlines в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка wingdi.h
библиотеки Opengl32.lib
DLL Opengl32.dll

См. также

GLYPHMETRICSFLOAT

OpenGL в Windows

Функции WGL

glCallLists

glListBase

glTexGen

wglUseFontBitmaps