Ich habe heute die Textsuite noch mal eingebunden. Das problem dabei ist, dass kleine Buchstaben nicht immer richtig angezeigt. Oder anders gesagt, ich kriege das nicht hin schaut mal das Foto im Anhäng. Die kleine Buchstaben so wie kleines 'L' ist ja nicht immer richtig angezeigt. Ich denke, der Ursache ist das OpenGL-Blending funktion und nicht Textsuite. könte jemand mir einen Tipp geben wie das mit Textsuite korrekt hinkriegen kann ?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
welche Parameter nuzt du den beim Blending (glBlendFunc)? Wie hast du den Font erstellt? Und wie zeichnest du? Ich hatte mir zum Rendern von Text mal ne kleine Klasse geschrieben, sie is nich perfekt, arbeitet aber bei simplen Textausgaben ganz gut. Kannsts ja ma ausprobieren (siehe Anhang).
MfG Bergmann
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Bergmann: Die Klasse ist zwar ganz schön und gut. Allerdings bin ich da eher sehr skeptisch. Denn durch die Struktur nimmst du dir die Flexibilität der Bibliothek und dadurch, dass du das Ausgeben des Textes so stark kappseln musst ziehst du leider die Handbremse an. Kleine Hinweise dazu. - glPushMatrix und glPopMatrix ist seit der 0.8 Stable nicht mehr nötig, da die OpenGL Position nicht mehr verändert wird. Besonders im Blockmodus. - Das tsPostAddShadow4f nach dem Erstellen des Fonts war nur ein Hack. Seit der 0.8.1 gibt es den Parameter TS_CREATOR_ADD_RESIZING_BORDER der das Resizeproblem sauber löst.
BawerPower: Das Einzige was dort wirklich wichtig ist ist die Frage wie du den Text ausgibst. Das Blendung ist relativ egal. Wie das Font erstellt wird eigentlich auch. Zu mindest kann man beim Erstellen nicht viel falsch machen und wenn doch dann würde man gar nichts sehen.
Ich muss gestehen, dass die rechten Ls für mich aber ganz normal aussehen. In der Schrift Arial sind kleine Ls tatsächlich nur einfache Striche. Bei dem Linken L liegt das problem vermutlich eher in der Art wie du zeichnest. Die TextSuite ist dafür ausgelegt 1:1 auf dem Bildschirm zu zeichnen. Also den Orthomodus und dann die Auflösung so wählen, dass eine OpenGL Einheit einem Pixel auf dem Bildschirm entspricht. Nur dann ist das Ergebniss wirklich richtig scharf. Ich empfehle bei unterschiedliche Schriftgrößen auch immer unterschiedliche Fonts zu erstellen und dann die Größen entsprechen anpassen.
Da das nicht immer möglich oder gewünscht ist muss man ab und an die Schrift skalieren. Wenn man die Schrift skaliert, dann kommt der OpenGL TexturFilter zum Einsatz und verändert die Darstellung der Textur. Das kann man ein bisschen beeinflussen. Wenn du die Schrift durch OpenGL skalieren musst, dann kann ich dir später erklären wie das geht. Aktuell lasse ich das hier erst mal weg. Verwirrt sonst nur.
Ansonsten solltest du mal überprüfen ob der Orthomodus bei dir genau die Auflösung deines Kontextes hat. Wenn das der Fall ist, dann musst du mal ein bisschen Code herzeigen. Ohne Code kann man das nur schlecht sagen. Auf dem Bild kann ich durch die JPEG Kompression leider nicht mehr erkennen ob die Schift 1:1 dargestellt wird oder nicht.
vielen Dank Lossy. genau glScale habe ich benutzt. Das Problem ist jetzt gelöst jedoch würde ich auch gerne wissen wie es mit skalierung gmacht wird. wäre nett wenn du einen Tipp geben könntest.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
BawerPower hat geschrieben:
genau glScale habe ich benutzt. Das Problem ist jetzt gelöst jedoch würde ich auch gerne wissen wie es mit skalierung gmacht wird. wäre nett wenn du einen Tipp geben könntest.
Wenn es sich einrichten lässt kann ich nur empfehlen es gar nicht zu machen, da das Ergebniss wirklich immer schlechter ist. Das ist prinzipbedingt so und kann man nicht vermeiden.
Wenn du nur 2-3 unterschiedliche Größen hast, dann solltest du der Qualität zu liebe eher 2-3 Schriften mit unterschiedlichen Größen erstellen und dann je nachdem die Ein oder Andere benutzen. Besonders im BlockModus beim Mischen der Schriften kommst du da nicht umher. Wenn du die Schriften einzeln irgendwo ausgeben willst, dann mag das okay sein. Hier ein paar Tipps.
- Nach dem Erstellen der Fonts solltest du den Parameter TS_CREATOR_ADD_RESIZING_BORDER setzen. Dieser sorgt dafür, dass die DANACH erstellen Zeichen noch mal speziell behandelt werden. Diese Behandlung sorgt dafür, dass beim Skalieren keine Farbverfälschungen auftreten und die Buchstaben nicht ineinander laufen. Das ineinander Laufen kann man auf deinem Bild leicht auf der rechten Seite des x erkennen. Da ist eine leicht dunkle Linie zu erkennen. Die entsteht durchs Skalieren und da neben dem x direkt ein andere Buchstabe in der Textur ist. Deswegen laufen die Farben durchs Interpolieren von OpenGL ineinander.
- Du solltest darauf achten, dass du nicht zu viel Skalierst. Wenn du eine 10px Schrift auf 100px ausdehnst ist es klar, dass man nur noch matschige Pixel erkennt. Mit Schrift hat das nichts mehr zu tun. Genau so auch anderstrum. Zu klein skaliert werden zu viele Pixel weggeschmissen und es sieht nur noch unförmig aus. Das kann man aber leider nur beeinflussen in dem man behutsam skaliert.
Ein Problem was man beim Skalieren nicht beeinflussen kann ist das die Schrift unweigerlich etwas matschig wird. Das kann man nicht verhindern. Du solltest auch aufpassen, dass du nicht eine Zeile 1:1 darstellst und direkt eine skalierte neben/untereinander. Die eine Zeile hätte klare Kanten und die andere Weiche. Das dürfte auf den Betrachter dann vermutlich etwas befremdlich/unruhig wirken. Also nie direkt mischen. Oder sehr genau kontrollieren wie es wirkt. Sonst hast du sehr schnell den Effekt, dass dem Betrachter ein Schauer über den Rücken läuft.
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.