![]() |
Textausgabe in OpenGL
Hallo liebe leuts
Ich hätte da mal n wahrscheinlich ganz einfach Frage: Aber wie kann ich in OpenGL an einer Koordinate (x,y,z) einen Text ausgeben? Mfg .. |
Re: Textausgabe in OpenGL
Kann man so direkt gar nicht. Man kann nur Quads im Orthogonalen Modus anzeigen lassen, wo die Schrift als Textur drauf ist. Schau mal nach delphigl.com, die haben da Templates für OGL 1.5, da steht das auch drin.
|
Re: Textausgabe in OpenGL
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist so nicht ganz richtig!
Man kann durchaus Text in OpenGL darstellen, sogar als 3D-Text mit Tiefe, usw. Dazu muss man an sich zunächst mal eine Displayliste mit alles Buchstaben drin erzeugen, welches etwa so aussieht:
Delphi-Quellcode:
Dieser Code erzeugt in eine Displayliste den Font "Arial Black" in Schriftgröße 12 mit ansonsten Normalen Attributen.
procedure BuildFont; // Build Our Font
var font: HFONT; // Windows Font ID gmf : array [0..255] of GLYPHMETRICSFLOAT; // Address Buffer For Font Storage begin displayliste := glGenLists(256); // Storage For Characters font := CreateFont(12, // Height Of Font 0, // Width Of Font 0, // Angle Of Escapement 0, // Orientation Angle 0, // Schrift Fett? Nein! 0, // Schrift Kursiv? Nein! 0, // Auch nicht unterstrichen…. 0, // … oder gar durchgestrichen ANSI_CHARSET, // Character Set Identifier OUT_TT_PRECIS, // Output Precision CLIP_DEFAULT_PRECIS, // Clipping Precision ANTIALIASED_QUALITY, // Output Quality FF_DONTCARE or DEFAULT_PITCH, // Family And Pitch 'Arial Black'); // Font Name SelectObject(form1.myDC, font); // Die Schriftart Wählen wglUseFontOutlines( form1.myDC, // Der Aktuelle DC 0, // Der erste “Buchstabe” 255, // Die gesamte Anzahl der Buchstaben displayliste, // Die Displayliste 0.0, // Deviation From The True Outlines 0.3, // Die “Dicke” der Schrift in Z-Richtung WGL_FONT_POLYGONS, // Wir wollen ganze Polygone, keine Linien @gmf); // Unserer Puffer end; Darstellen kann man den Text dann so:
Delphi-Quellcode:
So, damit hat man denn auch schon alles zusammen (die erste Prozedur muss ganz am Anfang einmal ausgeführt worden sein... dazu braucht es noch eine globale Variable vom Typ "tglint", welche unsere Displayliste speichert). Nun kann man während des Renderns relativ leicht einen beliebeigen Text darstellen:
procedure glPrint(text : pchar); // Custom GL "Print" Routine
begin if (text = '') then // If There's No Text Exit; // Do Nothing glPushAttrib(GL_LIST_BIT); // Pushes The Display List Bits glListBase(displayliste); // Sets The Base Character glCallLists(length(text), GL_UNSIGNED_BYTE, text); // Draws The Display List Text glPopAttrib(); // Pops The Display List Bits end;
Delphi-Quellcode:
Aussehen tut das ganze denn (in diesem Falle) so, wie auf dem Bild, welches hier im Anhang ist.
gltranslatef(-3,0,-9);
glcolor3f(0,0,1); glprint('OGL mit Mr_T ;-)'); Nähere Informationen, sowie ein kleines Beispielprogramm gibts auf meiner HP ... Kursteil 12 - 6 (Also 6. Kapitel des Kursteiles 12) müsste das sein ;) |
Re: Textausgabe in OpenGL
So ungefähr machens ja auch die Leute von delphigl.com
MfG |
Re: Textausgabe in OpenGL
:wiejetzt: Öhm ... und wenn du das so genau weißt, weiso behaupteste denn oben noch das ginge so direkt nicht?
Ich mein, es geht ja sehr gut ... man kann die Anfangsmarke für den text sich aussuchen und da den Text darstellen ... :gruebel: :?: |
Re: Textausgabe in OpenGL
Sorry ist nur ein Missverständnis - ich wollte damit nur sagen, dass es keine vorgefertigte Funktion in OGL gibt, sondern das es selbst gebastelt werden muss.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz