wglUseFontBitmaps: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K
 
(Version hochgeladen)
Zeile 1: Zeile 1:
{{Offline}}
+
= wglUseFontBitmaps =
 +
 
 +
<br>
 +
== Name ==
 +
'''wglUseFontBitmaps''' - Erzeugt aus der Schrifteinstellungen des [[Display Context]] eine Reihe von [[glBitmap]] Befehlen für die Buchstaben und speichert diese in Display Listen.
 +
 
 +
<br>
 +
== Delphi-Spezifikation ==
 +
 
 +
<b>function</b> wglUseFontBitmaps (<b><i>DC</i></b>: HDC; <b><i>p2</i></b>, <b><i>p3</i></b>, <b><i>p4</i></b>: DWORD): BOOL;
 +
 
 +
{| border = 10 cellspacing=0
 +
|'''''Parameter sind nicht gerade aussagekräfig und stimmen nicht mit der Delphi Hilfe überein. Nur leider stehen sie so in der DGLopenGL.pas'''''
 +
|}
 +
<br>
 +
 
 +
== Parameter ==
 +
 
 +
{| border="1" rules="all"
 +
! ''DC''
 +
| Ein Display Context mit entsprechenden Font-Einstellungen.
 +
|-
 +
! ''p1 / first''
 +
| Mit welchen Zeichen soll begonnen werden
 +
 
 +
! ''p2 / count''
 +
| Anzahl der zu erzeugenden Listen/Zeichen
 +
 
 +
! ''p3 / listBase''
 +
| Der Name/Index der Liste für das erste Zeichen
 +
|}
 +
 
 +
<br>
 +
 
 +
== Beschreibung ==
 +
Die Schrifteinstellungen des [[Display Context]]es werden genutzt, um mit [[glBitmap]]-Befehlen die angebenen Zeichen in [[Display Listen]] zu speichern.
 +
Wenn ein Fehler auftritt wird statt '''true''', '''false''' zurückgegeben und der Fehler kann über GetLastError abgerufen werden.
 +
 
 +
<br>
 +
== Hinweise ==
 +
Jede Display Liste erhält logischerweise nur einen [[glBitmap]] Aufruf.
 +
 
 +
Da der [[glBitmap]] Befehl genutzt wird ändert sich die Rasterposition nach aufruf einer Liste.
 +
 
 +
Falls für ein Zeichen in der gewählten Schrift keine Daten vorliegen wird für dieses Zeichen eine leere Displayliste zurückgegeben.
 +
 
 +
Die durch diese Funktion unter Windows zur Verfügung stehende Schrift hat eine festgelegte Größe und ist logischerweise nur 2D. Möchte man eine 3D-Schrift haben so kann man dafür den Befehl [[wglUseFontOutlines]] benutzen.
 +
<br>
 +
== Beispiel ==
 +
 
 +
<b>var</b>
 +
  FontLists:Cardinal;
 +
<br>
 +
<b>procedure </b>CreateLists;<font color="#000080"><i>// Wird einmal am Anfang aufgerufen</i></font>
 +
<b>var</b>
 +
  CustomFont:HFont;
 +
<b>begin
 +
  </b>FontLists := glGenLists(<font color="#000080">256</font>);
 +
  <font color="#000080"><i>(*CustomFont := GetStockObject (SYSTEM_FONT);*)//Eine Alternative zu CreateFont</i></font>
 +
  CustomFont := CreateFont(
 +
                            <font color="#000080">32</font>,                  <font color="#000080"><i>// H&ouml;he</i></font>
 +
                            0,                  <font color="#000080"><i>// Breite 0=Keine Vorgabe</i></font>
 +
                            0,
 +
                            0,
 +
                            0,                  <font color="#000080"><i>// Fett?</i></font>
 +
                            0,                  <font color="#000080"><i>// Kursiv?</i></font>
 +
                            0,                  <font color="#000080"><i>// Unterstrichen?</i></font>
 +
                            0,                  <font color="#000080"><i>// Durchgestrichen?</i></font>
 +
                            ANSI_CHARSET,
 +
                            OUT_TT_PRECIS,
 +
                            CLIP_DEFAULT_PRECIS,
 +
                            NONANTIALIASED_QUALITY,
 +
                            FF_DONTCARE <b>or </b>DEFAULT_PITCH,
 +
                            <font color="#FF2222">'Times New Roman'</font>); <font color="#000080"><i>// Name der Schrift</i></font>
 +
  SelectObject(glControl1.DC, CustomFont);
 +
  wglUseFontBitmaps (glControl1.DC, 0, 255, FontLists);
 +
<b>end</b>;
 +
<br>
 +
<b>procedure</b> ShowText(pText:<b>String</b>);
 +
<b>begin
 +
    </b>glListBase(FontLists); <font color="#000080"><i>//Liste auswählen</i></font>
 +
    glCallLists(Length(pText), GL_UNSIGNED_BYTE, Pointer(pText));<font color="#000080"><i>//Entsprechende Listen aufrufen</i></font>
 +
<b>end</b>;
 +
<br>
 +
<b>procedure </b>Draw;<font color="#000080"><i>//Zeichen Routine</i></font>
 +
<b>begin</b>
 +
  glClear(GL_COLOR_BUFFER_BIT <b>or </b>GL_DEPTH_BUFFER_BIT);
 +
  glColor3f(1,0.5,0);<font color="#000080"><i>//Aktuelle Farbe f&uuml;r glRasterPos festlegen</i></font>
 +
  glRasterPos3f(-0.1,0,-1); <font color="#000080"><i>//(sichtbare) Rasterposition eintellen</i></font>
 +
  ShowText(<font color="#FF2222">'OpenGL'</font>);
 +
  ShowText(<font color="#FF2222">' Wiki'</font>);<font color="#000080"><i>//Steht nach &quot;OpenGL&quot; da glBitmap die Rasterposition verschiebt.</i></font>
 +
<b>end</b>;
 +
 
 +
 
 +
==Siehe auch ==
 +
 
 +
[[glBitmap]], [[glListBase]], [[glCallLists]], [[wglUseFontOutlines]]

Version vom 1. September 2004, 20:29 Uhr

wglUseFontBitmaps


Name

wglUseFontBitmaps - Erzeugt aus der Schrifteinstellungen des Display Context eine Reihe von glBitmap Befehlen für die Buchstaben und speichert diese in Display Listen.


Delphi-Spezifikation

function wglUseFontBitmaps (DC: HDC; p2, p3, p4: DWORD): BOOL;
Parameter sind nicht gerade aussagekräfig und stimmen nicht mit der Delphi Hilfe überein. Nur leider stehen sie so in der DGLopenGL.pas


Parameter

DC Ein Display Context mit entsprechenden Font-Einstellungen.
p1 / first Mit welchen Zeichen soll begonnen werden p2 / count Anzahl der zu erzeugenden Listen/Zeichen p3 / listBase Der Name/Index der Liste für das erste Zeichen


Beschreibung

Die Schrifteinstellungen des Display Contextes werden genutzt, um mit glBitmap-Befehlen die angebenen Zeichen in Display Listen zu speichern. Wenn ein Fehler auftritt wird statt true, false zurückgegeben und der Fehler kann über GetLastError abgerufen werden.


Hinweise

Jede Display Liste erhält logischerweise nur einen glBitmap Aufruf.

Da der glBitmap Befehl genutzt wird ändert sich die Rasterposition nach aufruf einer Liste.

Falls für ein Zeichen in der gewählten Schrift keine Daten vorliegen wird für dieses Zeichen eine leere Displayliste zurückgegeben.

Die durch diese Funktion unter Windows zur Verfügung stehende Schrift hat eine festgelegte Größe und ist logischerweise nur 2D. Möchte man eine 3D-Schrift haben so kann man dafür den Befehl wglUseFontOutlines benutzen.

Beispiel

var
  FontLists:Cardinal;

procedure CreateLists;// Wird einmal am Anfang aufgerufen var CustomFont:HFont; begin FontLists := glGenLists(256); (*CustomFont := GetStockObject (SYSTEM_FONT);*)//Eine Alternative zu CreateFont CustomFont := CreateFont( 32, // Höhe 0, // Breite 0=Keine Vorgabe 0, 0, 0, // Fett? 0, // Kursiv? 0, // Unterstrichen? 0, // Durchgestrichen? ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, FF_DONTCARE or DEFAULT_PITCH, 'Times New Roman'); // Name der Schrift SelectObject(glControl1.DC, CustomFont); wglUseFontBitmaps (glControl1.DC, 0, 255, FontLists); end;
procedure ShowText(pText:String); begin glListBase(FontLists); //Liste auswählen glCallLists(Length(pText), GL_UNSIGNED_BYTE, Pointer(pText));//Entsprechende Listen aufrufen end;
procedure Draw;//Zeichen Routine begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glColor3f(1,0.5,0);//Aktuelle Farbe für glRasterPos festlegen glRasterPos3f(-0.1,0,-1); //(sichtbare) Rasterposition eintellen ShowText('OpenGL'); ShowText(' Wiki');//Steht nach "OpenGL" da glBitmap die Rasterposition verschiebt. end;


Siehe auch

glBitmap, glListBase, glCallLists, wglUseFontOutlines