Partager via


fonction wglUseFontOutlinesW (wingdi.h)

La fonction wglUseFontOutlines crée un ensemble de listes d’affichage, une pour chaque glyphe de la police de plan 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 premierglyphe de la police du contexte d’appareil spécifié. La taille carrée em de la police, la taille de grille théorique du plan 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 le sens z.

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

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 de plan souhaitée. La police de plan 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 du plan de police.

unnamedParam3

Spécifie le nombre de glyphes dans l’ensemble de glyphes utilisés pour former les listes d’affichage du plan de police. La fonction wglUseFontOutlines crée des listes d’affichage de nombre , 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 par rapport aux 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 l’écart doit être égale ou supérieure à 0.

unnamedParam6

Spécifie la quantité d’une police extrudée dans le sens z négatif. La valeur doit être égale ou supérieure à 0. Lorsque l’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 le format est WGL_FONT_LINES, la fonction wglUseFontOutlines crée des polices avec des segments de ligne. Lorsque le format est WGL_FONT_POLYGONS, wglUseFontOutlines crée des polices avec des polygones.

unnamedParam8

Pointe vers un tableau de structures GLYPHMETRICSFLOAT de comptage qui doit recevoir les métriques des glyphes. Lorsque lpgmf a la valeur NULL, aucune métrique de glyphe n’est retournée.

Valeur retournée

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

En cas d’échec de la fonction, la valeur de retour est FALSE et aucune liste d’affichage n’est générée. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

La fonction wglUseFontOutlines définit les glyphes d’une police de plan 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 possède un numéro d’identification unique commençant par le numéro listBase .

La fonction wglUseFontOutlines se rapproche des contours de glyphes en subdivisant les courbes B-spline quadratiques du plan en segments de trait, jusqu’à ce que la distance entre le contour et le point intermédiaire interpolé soit à l’intérieur de la valeur spécifiée par écart. Il s’agit du format final utilisé lorsque le format est WGL_FONT_LINES. Lorsque vous spécifiez WGL_FONT_OUTLINES, les listes d’affichage créées ne contiennent pas de normales ; par conséquent, l’éclairage ne fonctionne 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 le format comme WGL_FONT_POLYGONS les contours sont ensuite divisés en triangles, ventilateurs de triangles, bandes de triangles ou bandes quadrilatérales distinctes 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) ; par conséquent, la valeur frontale actuelle peut être modifiée. Pour une apparence optimale du texte avec WGL_FONT_POLYGONS, effectuez l’abattage des faces arrière comme suit :

glCullFace(GL_BACK); 
glEnable(GL_CULL_FACE);

Une structure GLYPHMETRICSFLOAT contient des informations sur l’emplacement et l’orientation de chaque glyphe dans une cellule de caractères. 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 les membres gmfCellIncX et gmfCellIncY de la structure GLYPHMETRICSFLOAT correspondante. La traduction permet de dessiner des caractères successifs dans leur sens naturel avec un seul appel à glCallLists.

Note 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 à l’aide de wglUseFontOutlines et wglUseFontBitmaps, lorsque vous utilisez des contextes d’appareil à double mise en 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.");

Notes

L’en-tête wingdi.h définit wglUseFontOutlines comme un 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête wingdi.h
Bibliothèque Opengl32.lib
DLL Opengl32.dll

Voir aussi

GLYPHMETRICSFLOAT

OpenGL sur Windows

Fonctions WGL

glCallLists

glListBase

glTexGen

wglUseFontBitmaps