Registriert: Do Mai 27, 2004 15:22 Beiträge: 25 Wohnort: Stuttgart
Hallo Leute,
nach weiterem rumprobieren und ein paar Test's wagte ich mal an daran, Texte dar zu stellen.
Nach mehreren ausprobieren von Bitmap Fontbuilder und diversen anderen Programmen habe ich mich für das FontStudio von Nitrogen entschieden. Bei allen anderen entstehen hässliche Kanteneffekte und die zwischenräume werden einfach zu groß.
Es wird dann in ein TGA-File gespeichert samt Daten (akkurate Zwischenräume bzw. tex-koordinaten).
Das Funktioniert soweit auch ganz gut. Aber sollte ich ein Hintergrundbild nehmen, funktioniert es nicht mehr - soll heissen nach dem Aufruf von "GenTexture" (über glbitmap2d) habe ich obwohl die Texture noch nicht gebunden wurde die Texture vom Hintergrundbild auf den Quads für die Buchstaben beim Text.
result :=true;// Texture Building Went Ok, Return True
end;
end.
Nach dem Durchschauen der Unit dachte ich es hängt einfach damit zusammen, daß einmal nur dur die Funktion "CreateTexture" eine Texture gebunden wurde und dann in der Zeichenroutine nicht wieder.
Ist da ein Fehler drin oder wie kann man Text richtig darstellen?
Funzt alles
Hier ohne Zeichnen des Bildes auf einem Quad - aber schon geladen und an OGL mit texture.Gentexture übergeben.
Und hier mit gezeichneten Quad und Texture drauf
Wäre echt dankbar wenn ihr mir dabei helfen könnt das Ding zum laufen zu bringen auch mittels meiner nicht gross vorhandenen Englischkenntnisse um mich bei Nitrogen im Forum über das Problem auszulassen...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ja also beim Erstellen muss eine Textur erst einmal gebunden werden. Und wenn ich mir so den Code der Fontklasse einmal anschaue, dann kann ich dort nirgends etwas entdecken was die Textur des Fonts bindet. Außer beim Erstellen.
Im Draw müsste er die entsprechende Textur erneut binden. Bzw denke ich, dass er es aus Optimierungsgründen so gemacht, dass er nur die TexturID rausreicht und du sie selber binden musst. Damit man bei richtig großen Texten nicht zu häufig ein und die selbe Textur binden muss. Ob das ein Fehler ist darüber kann man sich streiten. Ich finde es in jedem Fall unglück, dass ich da nirgends einen Hinweis gefunden habe.
Folgendes sollte ausreichen.
Code:
glBindTexture(GL_TEXTURE_2D, fnt.TexInd);
fnt.Draw(...);
PS: Ey. Das ist unfair selber auf die Lösung zu kommen wärend ich gerade am Schreiben bin. PPS: Aber schön, dass du es selber gefunden.
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.