Registriert: Fr Mai 16, 2008 20:26 Beiträge: 158 Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Ich bin nun ein ganzes Stück vorran gekommen auch dank eurer Hilfe.
Aber es gibt wiedermal 2 kleine Knackpunkte *LossyEx anstarr und eine gemeine Keskfährte leg*
1. Wie man im Anhang sieht wird die Schrift wunderbar gerendert. Ist keine Schriftfarbe gesetzt sind die Outlines auch wunderbar in ihrer Farbe zu sehen.
Aber sobald eine Schriftfarbe gesetzt ist (siehe Bild 2) werden die Outlines nochmals mit eingefärbt.
Ich benutze Blending weil ich Transzparenz haben möchte und es doch wesentlich besser aussieht als mit dem Alphatest:
Blending an
Textur binden
Begin Quads zu zeichnen
Setze Farbe, TexturKoords, VertexKoords 4x
End
Unbind
Disable Blending
Das Blending darf ich ja nicht zwischen Begin und End aufrufen, so dass immer beides Beeinflußt wird davon. Andere Blendingarten bringen noch mehr Nachteile .. Also ist es möglich, dass die Outlines ihre ursprüngliche Farbe behalten? Wenn nicht ist es auch kein Beinbruch, nur dann kann ich aufhören rumzuprobieren ^^
2. Diese Schriftgröße macht mich auch irgendwie fertig.
Ideen:
- Für jede Schriftgröße eine eigene TexturFont erstellen => unnötige Resourcenbelastung.
- Einfach glscale benutzen, wäre theoretisch möglich, sieht auch richtig gut aus, jedoch wird der ganze Text in seiner Position verschoben, so dass ich irgendwie den Factor mit dem das Scale die Koordinaten beeinflußt irgendwie wissen müsste. Kann man das iregdnwie berechnen oder sich ausgeben lassen?
Außerdem kann ich damit nur ungefähr die Größe bestimmen, nicht Pixelgenau.
- Einfach das Verhältnis der Höhe zur Breite berechnen ( NeueHöhe*Breite/AlteHöhe = factor) und die Quad Seiten mit dem factor Multiplizieren, so das ein kleineres Quad gezeichnet wird.
Problem ist, dass die Ausgangshöhe nicht der Schriftgröße entsprechen muss und es auch ab und an etwas Pixlig aussieht fand ich jedenfalls.
Mir ist grad noch eingefallen, dass ich leider nicht die Ausgangsschriftgröße auf der Font kenne, nur die Gesamthöhe für alle Buchstaben, da ist noch Platz oben und unten und wenn Outlines sind, kommen die auch dazu.
Ich hatte noch ein paar Sachen ausprobiert, aber die waren alle noch unzufriedenstellender. Aber vll hat ja jemand noch eine wunderbare idee dazu, ansonsten werde ich die letzte Variante nehmen.
mfg revolte
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
1) Also wenn Schrift und Outline eine Textur sind dann geht das nicht, denn die gesetzten Farben werden miteinander multipliziert. Also die aktuelle Farbe der Textur und die des Fragments. Also glColor*. Das kann man auch nur mit Shadern verändern aber das wäre vermutlich etwas übertrieben.
2) glScale auf solche pixelgenauen Texturen ist nicht ganz unproblematisch. Denn sobald du die Größe veränderst wird die Textur überdurchschnittlich weich. Außerdem je nachdem wie genau deine Schriftinformationen sind kannst du nicht genau berechnen wie viel du skalieren musst. Aber normal musst du vom höchstenpunkt (Ascent) bis zum tiefsten (Descent) Punkt als Schriftgröße sehen. Und wenn du das anpasst, dann sollte dir größe passen. Aber du musst wie gesagt von diesen Werten ausgehen. Außerdem musst du die Schrift an Grundlinie (Baseline) ausrichten. Das ist die wo Ascent und Descent nach oben bzw nach unten gehen.
Registriert: Fr Mai 16, 2008 20:26 Beiträge: 158 Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
1) Gut naja Shader benutze ich zwar, aber für jede Textausgabe extra nochmal einen Shader drüberbügeln wär wirklich nicht das wahre. Aber wenn es nicht geht dann weiß ich ja Outline auch Weiß machen und dann Gesamt einfärben. ^^
2) Mh naja das weiche stört ja nicht unbedingt, solang man es noch lesen könnte. Aber die andere Variante ist dann wohl doch besser, auch wenn ich nur die Informationen aus dem FontStudio4 habe was du mir empfohlen hattest ^^
<chardata char="33" A="2" C="6" wid="24" hgt="50" X1="0" Y1="0,09765625" X2="0,0234375" Y2="0,1953125" />
Wobei hgt für alel gleich ist.
A denke ich mal steht dann für Acent und C decent? Das benutze ich jedenfalls für den Abstand zum nächsten Buchstaben. mh das Tutorial gibt da auch nicht so gute Informationen. Aber dann lass ich dass mit dem Pixelgenauen, muss der User halt damit leben nur mit einem Schieberegler die Größe einstellen zu können.
mfg revolte ^^
_________________ System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ascent und Descent sollten zusammen ziemlich genau so groß sein wie die Höhe der Zeile. Wobei Descent üblicherweise 1/3tel einnimmt und Ascent 2/3tel. So ca. Kann natürlich anders sein. Also ich würde sagen, dass A und C nichts mit Ascent und Descent zu tun haben.
Aber ich denke da würde es sich schon lohnen jeweils ein extra Font zu machen. Wenn du allerdings 20 Stück brauchst, dann solltest du mal überlegen ob das Design so glücklich gewählt wurde. Ansonsten denke ich wird das schon okay sein.
PS: Man muss ja auch nicht immer alle Fonts laden. Selbst, wenn du 5-6 erstellst und mitlieferst.
Registriert: Fr Mai 16, 2008 20:26 Beiträge: 158 Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Okay danke dann ist das damit geklärt, das ich die Infos nicht habe ^^
Naja eigentlich brauch ich nur 1 Schriftart, welche ich für mich verwende, die ist dann Fix und eine für den Benutzer, die sollte dann Variabel sein in farbe und Größe, aber am besten zur Laufzeit.
Gut aber wenn es da keine richtigen Lösungen gibt bin ich ja irgendwie auch glücklich, sonst find ich irgendwie immer was zu einem Thema im Internet, aber bei den ganzen 3D-Sachen ist das alles irgendwie nicht sehr weit her :S Gut das es euch hier gibt.
mfg ^^
_________________ System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Na ja. So wirklich Variabel wirst du es sowieso nicht bekommen. Denn du kannst mit dem Font Studio nur offline Schriften generieren. Allerdings spricht ja nichts dagegen 2-3 zu erstellen und dem User die Wahl zu lassen. Je nachdem was du machst ist das evtl sogar besser, denn dann kann er es anpassen aber zerschießt dir nicht das Design. Er kann es dann halt nur in de Rahmen ändern in dem du es ihm erlaubst.
Das mit der Größe. Na ja. Skalieren kannst du es. Nur du kannst nicht so einfach sagen, dass die Schrift 16, 18, 20 Punkte groß sein soll. Alternativ kannst du ja aber auch sagen, dass er die Schriftgröße im Bereich von 50-150% verändern kann. Also das ist bewusst so formuliert, dass man keine genaue Größe mehr herleiten kann. Aber die Prozent kannst du direkt in glScale übergeben (durch 100 nicht vergessen). Damit hast du eine Skalierbarkeit und kannst "vertuschen", dass du nicht 100%tig die genaue Größe einstellen kannst.
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.