Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 03.11.2006, 14:24 Titel: Eigene Fonts benutzen |
|
|
Hallo erstmal
Hät mal ne frage gibt es eine Möglichkeit mit ID3DXFont eigent Fonts zu importieren und benutzten oder ist ID3DXFont veralter und es gibt längst eine
überarbeiterte Möglichkeit der Textausgabe unter dx9.
Danke schonmal jetzt.
mfg fast_hawk _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.11.2006, 15:15 Titel: |
|
|
Ich glaub man kann einfach ein TrueTypeFont benutzen. Müsste aber in der Doku stehen, wie genau man das einstellt. Sollte sich abr einiges finden lassen zu dem Thema.
Veraltert würde ich nicht sagen, ich würds einfach benutzen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 03.11.2006, 15:48 Titel: |
|
|
Kleiner erfahrungsbericht zum Theme ID3DXFont:
ohne ID3DXFont und bissl Szenenzeugs: 10.000FPS
mit ID3DXFont und bissl Szenenzeugs: 1.000FPS
mit ID3DXFont und bissl Szenenzeugs: 300FPS bei nem anderen Rechner.
Als Notlösung brauchbar aber suche dir lieber was anderes. I3DXLine sowie Font nutzen intern GDI und diverse texturspielerein _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 03.11.2006, 16:50 Titel: |
|
|
naja ist es wirklich so schlimm wenn du ungefähr 10 aufrufe mit je 30 buchstaben benutzt...
und 10.000 schaffst du mit dx9 eh nie.
was benutzt du den???
Aber soweit wie ich das in der msdn seh ist die einzige möglichkeit die eigenen fonts zu den standard fonts einzufügen.....
mfg fast hawk _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 03.11.2006, 16:59 Titel: |
|
|
Nun es waren afaik 5 Zeilen
so lang wie die erste Zeile grade eben.
Schreibe dir eine FontEngine, ist aber mit ner Menge Arbeit verbunden, wie gesagt du kannst das Fontzeugs nutzen aber wundere dich nicht über entsprechende Framecounts. Erreicht haben wir dir mit ganz normal DirectX9 nichts extra vagantes, allerdings hatte die Szene selbst kaum inhalt, nur ein Modell ohne Besonderheiten. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.11.2006, 00:06 Titel: |
|
|
Hm, wie würde man sowas prinzipiell machen?
Meine Idee wäre jetzt ein TTF zu laden und mit GDI quasi jeden Buchstaben auf eine große Textur rendern, an feste Positionen.
Will man einen Text anzeigen wird ein Vertexbuffer erstellt, welcher die Buchstaben nacheinander beinhaltet. Diese kann man dann in einem rutsch rendern.
Denn jeden Buchstaben einzelnt rendern wäre wohl nciht so gut, und für jeden Text eine eigene Textur zu erstellen und diese anzuzeigen auch nicht (so mach cihs bei meinem Spiel im Moment, bei viel Text z.b. Inventar geht das schon mächtig an die Performance). _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 04.11.2006, 11:59 Titel: |
|
|
Wenn man seine Font selber zeichnet und Buchtaben aus TTF-Fonts benutzt, welche man z.B. in eine 512*512 Textur gezeichnet hat, sollte man auch die Abstände der einzelnen Buchstaben zueinander speichern.
Am besten in einer zusätzliche Datei wie Arial.textmetrics oder so...
Denn jeder Buchtabe hat erstmal eine Variable Breite und dann noch einen Vorabstand und einen Nachabstand.
GetCharABCWidthsFloat
Die Funktion gibt dir sowas:
ABCFLOAT
The ABCFLOAT structure contains the A, B, and C widths of a font character.
CPP: | typedef struct _ABCFLOAT {
FLOAT abcfA;
FLOAT abcfB;
FLOAT abcfC;
} ABCFLOAT, *PABCFLOAT;
|
Members
abcfA
Specifies the A spacing of the character. The A spacing is the distance to add to the current position before drawing the character glyph.
abcfB
Specifies the B spacing of the character. The B spacing is the width of the drawn portion of the character glyph.
abcfC
Specifies the C spacing of the character. The C spacing is the distance to add to the current position to provide white space to the right of the character glyph.
Remarks
The A, B, and C widths are measured along the base line of the font.
The character increment (total width) of a character is the sum of the A, B, and C spaces. Either the A or the C space can be negative to indicate underhangs or overhangs. |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
Nach oben |
|
|
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 05.11.2006, 14:22 Titel: |
|
|
danke für die antworten.
Ich hab jetzt woanderes gefunden wie ich eigene fonts einfügen kann für alle die es interressiert:
CPP: | int AddFontResource(
LPCTSTR lpszFilename // font file name
);
|
Das mit der eingen Font enegine ist sicherlich besser aber was bringt es einem wenn man eine eigene Font-Enegine macht und dann das laufende Projekt vergisst das mach ich lieber das wenn der Rest fertig ist.....
mfg fast_hawk _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
|