wglUseFontOutlinesA-Funktion (wingdi.h)
Die wglUseFontOutlines-Funktion erstellt einen Satz von Anzeigelisten, eine für jede Glyphe der derzeit ausgewählten Gliederungsschriftart eines Gerätekontexts, zur Verwendung mit dem aktuellen Renderingkontext. Die Anzeigelisten werden verwendet, um 3D-Zeichen von TrueType-Schriftarten zu zeichnen. Jede Anzeigeliste beschreibt eine Glyphenkontur in Gleitkommakoordinaten.
Die Ausführung von Glyphen beginnt mit der Firstglyphe der Schriftart des angegebenen Gerätekontexts. Die quadratische Größe der Schriftart, die fiktive Rastergröße der ursprünglichen Schriftgliederung, aus der die Schriftart angepasst wird, wird in den x- und y-Koordinaten in den Anzeigelisten dem Wert 1,0 zugeordnet. Der Extrusionsparameter legt fest, wie viel Tiefe die Schriftart in z-Richtung hat.
Thelpgmfparameter gibt eine GLYPHMETRICSFLOAT-Struktur zurück, die Informationen über die Platzierung und Ausrichtung der einzelnen Glyphe in einer Zeichenzelle enthält.
Syntax
BOOL wglUseFontOutlinesA(
HDC unnamedParam1,
DWORD unnamedParam2,
DWORD unnamedParam3,
DWORD unnamedParam4,
FLOAT unnamedParam5,
FLOAT unnamedParam6,
int unnamedParam7,
LPGLYPHMETRICSFLOAT unnamedParam8
);
Parameter
unnamedParam1
Gibt den Gerätekontext mit der gewünschten Gliederungsschriftart an. Die Gliederungsschriftart von hdc wird verwendet, um die Anzeigelisten im aktuellen Renderingkontext zu erstellen.
unnamedParam2
Gibt die erste der Glyphen an, die die Anzeigelisten der Schriftartgliederung bilden.
unnamedParam3
Gibt die Anzahl der Glyphen im Satz von Glyphen an, die zum Bilden der Anzeigelisten für die Schriftartgliederung verwendet werden. Die wglUseFontOutlines-Funktion erstellt Anzeigelisten für die Anzahl , eine Anzeigeliste für jede Glyphe in einem Satz von Glyphen.
unnamedParam4
Gibt eine Startanzeigeliste an.
unnamedParam5
Gibt die maximale Chordalabweichung von den ursprünglichen Konturen an. Wenn die Abweichung null ist, entspricht die Chordabweichung einer Entwurfseinheit der ursprünglichen Schriftart. Der Wert der Abweichung muss gleich oder größer 0 sein.
unnamedParam6
Gibt an, wie viel eine Schriftart in der negativen z-Richtung extrudiert wird. Der Wert muss gleich oder größer 0 sein. Wenn die Extrusion 0 ist, werden die Anzeigelisten nicht extrudiert.
unnamedParam7
Gibt das Format an, entweder WGL_FONT_LINES oder WGL_FONT_POLYGONS, das in den Anzeigelisten verwendet werden soll. Wenn das Format WGL_FONT_LINES ist, erstellt die wglUseFontOutlines-Funktion Schriftarten mit Zeilensegmenten. Wenn das Format WGL_FONT_POLYGONS ist, erstellt wglUseFontOutlines Schriftarten mit Polygonen.
unnamedParam8
Verweist auf ein Array von GLYPHMETRICSFLOAT-Count-Strukturen, die die Metriken der Glyphen empfangen sollen. Wenn lpgmfNULL ist, werden keine Glyphenmetriken zurückgegeben.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.
Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE , und es werden keine Anzeigelisten generiert. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Die wglUseFontOutlines-Funktion definiert die Glyphen einer Gliederungsschriftart mit Anzeigelisten im aktuellen Renderingkontext. Die wglUseFontOutlines-Funktion funktioniert nur mit TrueType-Schriftarten. Strich- und Rasterschriftarten werden nicht unterstützt.
Jede Anzeigeliste besteht aus Zeilensegmenten oder Polygonen und verfügt über eine eindeutige Identifikationsnummer, die mit der listBase-Nummer beginnt.
Die wglUseFontOutlines-Funktion nähert Glyphenkonturen an, indem die quadratischen B-Splinekurven der Kontur in Liniensegmente unterteilt werden, bis der Abstand zwischen der Kontur und dem interpolierten Mittelpunkt innerhalb des durch Abweichung angegebenen Werts liegt. Dies ist das endgültige Format, das verwendet wird, wenn das Format WGL_FONT_LINES. Wenn Sie WGL_FONT_OUTLINES angeben, enthalten die erstellten Anzeigelisten keine Normalen. daher funktioniert die Beleuchtung nicht ordnungsgemäß. Um die richtige Beleuchtung von Linien zu erhalten, verwenden Sie WGL_FONT_POLYGONS, und legen Sie glPolygonMode( GL_FRONT, GL_LINE ) fest. Wenn Sie das Format als WGL_FONT_POLYGONS werden die Konturen weiter in separate Dreiecke, Dreiecksfächer, Dreiecksstreifen oder viereckigen Streifen unterteilt, um die Oberfläche der einzelnen Glyphen zu erstellen. Bei WGL_FONT_POLYGONS rufen die erstellten Anzeigelisten glFrontFace( GL_CW ) oder glFrontFace( GL_CCW ) auf. Daher kann der aktuelle Front-Face-Wert geändert werden. Um die beste Darstellung von Text mit WGL_FONT_POLYGONS zu erzielen, klammern Sie die Rückflächen wie folgt ab:
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
Eine GLYPHMETRICSFLOAT-Struktur enthält Informationen über die Platzierung und Ausrichtung der einzelnen Glyphe in einer Zeichenzelle. Der lpgmf-Parameter ist ein Array von GLYPHMETRICSFLOAT-Strukturen , die den gesamten Satz von Glyphen für eine Schriftart enthalten. Jede Anzeigeliste endet mit einer Übersetzung, die mit den Membern gmfCellIncX und gmfCellIncY der entsprechenden GLYPHMETRICSFLOAT-Struktur angegeben ist. Die Übersetzung ermöglicht das Zeichnen aufeinanderfolgender Zeichen in ihrer natürlichen Richtung mit einem einzigen Aufruf von glCallLists.
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie Text mit wglUseFontOutlines gezeichnet wird.
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.");
Hinweis
Der wingdi.h-Header definiert wglUseFontOutlines als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wingdi.h |
Bibliothek | Opengl32.lib |
DLL | Opengl32.dll |