Pdd: Hat das denn mit D6 funktioniert? Hattest du mal ausprobiert was der Kompiler dazu sagt?
Wie versprochen habe ich das
Tool hochgeladen.
Ein paar Anmerkungen gibt es noch. Das Programm habe ich nie zu 100% fertiggestellt also fehlen überall noch diverse Kleinigkeiten, die Benutzerfreundlichkeit und der Funktionsumfang lassen auch zu wünschen übrig. "File" -> "Close" funktioniert nicht. Das Program muss über das Kreuz geschlossen werden. Es ist nur in der lage 32 Bit (RGBA) TGAs zu speichern. Und entsprechend die Breiten der einzellnen Zeichen. Die TGAs können aus unbekannten Gründen leider nicht in Gimp eingeladen werden. Mit der glBitmap funktioniert es allerdings Problemlos. Anmerkungen, Wünsche und Kritiken zu Allem sind gerne will kommen. Allerdings werde ich ich an dem Program nichts mehr machen, da das alles umfangreich neu entwickelt wird.
Hier ein kleines Sample für Texturefonts.
Font erzeugen
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| fFont := TglTextureText.Create; fFont.Texture := TglBitmap2D.Create; fFont.Texture.SetFilter(GL_LINEAR, GL_LINEAR); fFont.Texture.MipMap := mmNone; fFont.Texture.LoadFromFile('Tahoma.tga'); fFont.Texture.GenTexture;
fFont.CharSpacing := 1; fFont.ReadCharWidthsFromIni(ExtractFilePath(ParamStr(0)) + 'Tahoma.ini', 'Char Widths'); fFont.BuildFont; |
Die glBitmap muss getrennt erstellt werden, da es auch möglich ist, dass sich mehrere Fonts ein und die selbe Textur teilen können.
Frei geben
1: 2:
| fFont.Texture.Free; fFont.Free; |
Entsprechend muss dann auch die Textur und die Fontklasse die diese benutzt getrennt frei gegeben werden.
Zeichnen
1: 2: 3: 4:
| glPushMatrix; glTranslatef(20, 20, 0); fFont.PrintText('Blahh'); glPopMatrix; |
Das
glPushMatrix dient dazu um die aktuelle Matrix zu sichern und das
glPopMatrix stellt diese dann wieder her. Durch das
glTranslatef und durch das PrintText wird die in der Matrix gespeicherte Position verändert. Aus diesem Grund sollte man die Position speichern und wieder herstellen. Zu mindest wenn man mehrere Texte sinnvoll anordnen möchte. Das
glTranslatef dient dazu um unseren Text zu positionieren.
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.