Partager via


wglUseFontOutlinesW, fonction (wingdi.h)

La fonction wglUseFontOutlines crée un ensemble de listes d’affichage, un pour chaque glyphe de la police hiérarchique actuellement sélectionnée d’un contexte d’appareil, à utiliser avec le contexte de rendu actuel. Les listes d’affichage sont utilisées pour dessiner des caractères 3D de polices TrueType. Chaque liste d’affichage décrit un plan de glyphe en coordonnées à virgule flottante.

L’exécution des glyphes commence par le premier glyphe de la police du contexte d’appareil spécifié. La taille carrée em de la police, la taille de grille notionale du contour de police d’origine à partir de laquelle la police est ajustée, est mappée à 1,0 dans les coordonnées x et y dans les listes d’affichage. Le paramètre d’extrusion définit la profondeur de la police dans la direction z.

Thelpgmfparameter retourne une structure GLYPHMETRICSFLOAT qui contient des informations sur le positionnement et l’orientation de chaque glyphe dans une cellule de caractère.

Syntaxe

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

Paramètres

unnamedParam1

Spécifie le contexte de l’appareil avec la police hiérarchique souhaitée. La police hiérarchique de hdc est utilisée pour créer les listes d’affichage dans le contexte de rendu actuel.

unnamedParam2

Spécifie le premier de l’ensemble de glyphes qui forment les listes d’affichage des contours de police.

unnamedParam3

Spécifie le nombre de glyphes dans l’ensemble de glyphes utilisés pour former les listes d’affichage des contours de police. La fonction wglUseFontOutlines crée nombre de listes d’affichage, une liste d’affichage pour chaque glyphe dans un ensemble de glyphes.

unnamedParam4

Spécifie une liste d’affichage de départ.

unnamedParam5

Spécifie l’écart chordal maximal des contours d’origine. Lorsque l’écart est égal à zéro, l’écart chordal équivaut à une unité de conception de la police d’origine. La valeur de écart doit être égale ou supérieure à 0.

unnamedParam6

Spécifie la quantité d’une police extrudée dans la direction négative z. La valeur doit être égale ou supérieure à 0. Lorsque d’extrusion est 0, les listes d’affichage ne sont pas extrudées.

unnamedParam7

Spécifie le format, WGL_FONT_LINES ou WGL_FONT_POLYGONS, à utiliser dans les listes d’affichage. Lorsque format est WGL_FONT_LINES, la fonction wglUseFontOutlines crée des polices avec des segments de ligne. Lorsque format est WGL_FONT_POLYGONS, wglUseFontOutlines crée des polices avec des polygones.

unnamedParam8

Pointe vers un tableau de countGLYPHMETRICSFLOAT structures qui doivent recevoir les métriques des glyphes. Lorsque lpgmf est NULL, aucune métrique de glyphe n’est retournée.

Valeur de retour

Lorsque la fonction réussit, la valeur de retour est TRUE.

Lorsque la fonction échoue, la valeur de retour est FAUX et aucune liste d’affichage n’est générée. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

La fonction wglUseFontOutlines définit les glyphes d’une police hiérarchique avec des listes d’affichage dans le contexte de rendu actuel. La fonction wglUseFontOutlines fonctionne uniquement avec les polices TrueType ; Les polices de trait et de raster ne sont pas prises en charge.

Chaque liste d’affichage se compose de segments de ligne ou de polygones et a un numéro d’identification unique commençant par le numéro listBase.

Le wglUseFontOutlines fonction correspond approximativement aux contours de glyphe en subdividant les courbes B-spline quadratiques du contour en segments de trait, jusqu’à ce que la distance entre le contour et le milieu interpolé se trouve dans la valeur spécifiée par écart. Il s’agit du format final utilisé lorsque format est WGL_FONT_LINES. Lorsque vous spécifiez WGL_FONT_OUTLINES, les listes d’affichage créées ne contiennent pas de normales ; l’éclairage ne fonctionne donc pas correctement. Pour obtenir l’éclairage correct des lignes, utilisez WGL_FONT_POLYGONS et définissez glPolygonMode(GL_FRONT, GL_LINE). Lorsque vous spécifiez format comme WGL_FONT_POLYGONS les contours sont plus tessellés en triangles distincts, ventilateurs de triangle, bandes de triangles ou bandes quadrilatérales pour créer la surface de chaque glyphe. Avec WGL_FONT_POLYGONS, les listes d’affichage créées appellent glFrontFace(GL_CW) ou glFrontFace( GL_CCW) ; Ainsi, la valeur frontale actuelle peut être modifiée. Pour la meilleure apparence du texte avec WGL_FONT_POLYGONS, découpez les visages de dos comme suit :

glCullFace(GL_BACK); 
glEnable(GL_CULL_FACE);

Une structure GLYPHMETRICSFLOAT contient des informations sur le positionnement et l’orientation de chaque glyphe dans une cellule de caractère. Le paramètre lpgmf est un tableau de structures GLYPHMETRICSFLOAT contenant l’ensemble entier de glyphes pour une police. Chaque liste d’affichage se termine par une traduction spécifiée avec la gmfCellIncX et les membres gmfCellIncY de la structure GLYPHMETRICSFLOAT correspondante. La traduction permet le dessin de caractères successifs dans leur direction naturelle avec un seul appel à glCallLists.

Remarque Avec OpenGL pour Windows, vous ne pouvez pas effectuer d’appels GDI à un contexte d’appareil lorsqu’un format de pixel est mis en mémoire tampon double. Vous pouvez contourner cette limitation en utilisant wglUseFontOutlines et wglUseFontBitmaps, lors de l’utilisation de contextes d’appareil à double mémoire tampon.
 

Exemples

L’exemple de code suivant montre comment dessiner du texte à l’aide de 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.");

Note

L’en-tête wingdi.h définit wglUseFontOutlines comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête wingdi.h
bibliothèque Opengl32.lib
DLL Opengl32.dll

Voir aussi

GLYPHMETRICSFLOAT

OpenGL sur Windows

fonctions WGL

glCallLists

glListBase

glTexGen

wglUseFontBitmaps