Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Mär 19, 2024 05:13

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: TextSuite 2.0
BeitragVerfasst: Mo Feb 09, 2015 19:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

da sich einige dafür interessieren gibt es mal wieder was neues von mir. Und zwar eine Reimplementierung der alt bekannten TextSuite von LossyEx.

Warum hab ich das Projekt ins Leben gerufen?
Ich hab die TextSuite bis jetzt erfolgreich in meinen Projekten einsetzten können. Sie ist klein, unkompliziert und hat kaum Abhängigkeiten, aber trotzdem gibt es hier und da noch ein paar Dinge die man gern hätte, die aber bis jetzt noch nicht angeboten wurden. Bei mir war das zum einen der Support für Linux (z.B. über FreeType) und OpenGL ES als Zeichen-Schnittstelle. Also hab ich mich in den Code eingearbeitet und versucht die fehlenden Funktionen noch zu implementieren. Beim durcharbeiten des Codes sind mir dann aber ein paar Sachen aufgefallen die mir nicht so richtig gefallen haben. Unter Anderem: Rendern im Immediate Mode, sehr große unübersichtliche Code-Konstrukte, kein OOP-Support und hier und da noch ein paar Kleinigkeiten. Also hab ich mich hingesetzt und alles refactored. Die Grund-Idee ist jedoch die selbe geblieben.
Jetzt werden sicherlich einige Sagen: Für Linux gibts da doch fertige Sachen (z.B. pango). Für mich war aber wichtig, das die Bibliothek sowohl auf Windows, als auch auf Linux mit möglichst wenig Abhängigkeiten und relativ performant läuft und genau das war auch der Grund warum ich mich gegen pango entscheiden hab.

Was ist jetzt neu?
Wie schon erwähnt ist die TextSuite jetzt Objekt-Orientiert. Das war die alte zwar auch, aber nur intern. Das Interface was dem Nutzern angeboten wurde, war rein prozedural. Die Klassen bieten ein abstraktes Interface, mit dem jeder neue Renderer oder Font-Generatoren einfügen kann. Zur Zeit gibt es OpenGL als Renderer und die GDI als Font-Generator. Der OpenGL-Renderer wurde an die aktuellen Standards angepasst (VBOs & Co), womit ein Performance-Vorteil von ca. 30% erzielt werden konnte. Im Anhang findet ihr eine kleine Übersicht über den aktuellen Aufbau. Ich denke das Bild ist selbsterklärend. Wer trotzdem Fragen dazu hat kann diese gerne stellen.

Was ist noch geplant?
Die Funktionalitäten aus der alten TextSuite sind fast alle umgesetzt. Bis jetzt ist noch der Renderer für OpenGL ES und ein FreeType-Font-Generator geplant. Für später ist evtl. auch noch ein prozedurales Interface geplant, damit man die TextSuite wieder als Library anbieten kann, aber da muss ich erstmal sehen ob das überhaupt gewünscht wird oder nicht (also wer das benötigt bitte melden).

Kleines Beispiel
Code:
  1. tsContext   := TtsContext.Create;
  2. tsRenderer  := TtsRendererOpenGL.Create(tsContext, tsFormatRGBA8);
  3. tsGenerator := TtsFontGeneratorGDI.Create;
  4. tsFont      := tsGenerator.GetFontByName('Calibri', tsRenderer, 25, [], tsAANormal);
  5. tsTextBlock := tsRenderer.BeginBlock(0, 0, ClientWidth, ClientHeight, [tsBlockFlagWordWrap]);
  6. try
  7.   tsTextBlock.ChangeFont(ftsFont);
  8.   tsTextBlock.ChangeColor(tsColor4f(1.0, 0.0, 0.0, 1.0));
  9.   tsTextBlock.TextOutW(TEST_STRING);
  10. finally
  11.   tsRenderer.EndBlock(tsTextBlock);
  12.   FreeAndNil(tsFont);
  13.   FreeAndNil(tsGenerator);
  14.   FreeAndNil(tsRenderer);
  15.   FreeAndNil(tsContext);
  16. end;

Wo bekomm ich das her?
Die TextSuite liegt in einem meiner git-Repos und kann von dort bezogen werden. Bitte beachtet, das alles noch Work-In-Progress ist, also hier und da noch Bugs drin sein könnten. Ich mach das ganze aber trotzdem jetzt schon öffentlich, das die Leute die es interessiert noch Einfluss auf die Entwicklung nehmen können. Außerdem hab ich so gleich ein paar Beta-Tester :)
Kleine Anmerkung zum Schluss: Das aktuelle Beispiel benötigt den OpenGLCore welcher als als git-Submodule mit eingefügt ist.

Meinungs-Thread
WebInterface zum Repo
latest Source Download
v1.0.0.0 Source Download
git clone url: gitlab@git.ccs-baumann.de:bitspace/textsuite.git


Dateianhänge:
classes.png [75.76 KiB]
Noch nie heruntergeladen

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite 2.0
BeitragVerfasst: Mi Feb 18, 2015 19:22 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

ich hab das PostProcessing fertig. Damit ist der Funktions-Umfang wieder auf dem Stand der alten TextSuite. Kleines Beispiel liegt im Anhang bei. Der aktuelle Stand ist im Repo (siehe oben). Als nächstes werd ich mich FreeType und OpenGL ES widmen.

Dateianhang:
postprocess.png
postprocess.png [ 201.81 KiB | 20502-mal betrachtet ]


MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite 2.0
BeitragVerfasst: Mo Feb 23, 2015 19:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

ich hab FreeType als FontGenerator eingabaut. Leider gibts es zwischen GDI und FreeType ein paar kleine Unterschiede:
  • der Zeilenabstand ist minimal anders
  • GDI gibt keine Glyph-Daten für Leerzeichen aus (deshalb die fehlen die Linien zwischen den Wörtern)
  • GDI rechnet das ExternalLeading mit in Acent rein (WTF?! :shock: )
Mal sehen ob ich das noch beheben kann. Wenn nicht wäre das aber denke ich auch nicht so schlimm, da man ja normalerweiße nur einen der beiden Generatoren in einem Projekt verwendet. Im Anhang gibts es wie immer ein Bild des aktuellen Standes: oben GDI, unten FreeType. Code liegt wie immer im Repo (siehe oben)...

MfG Bergmann.


Dateianhänge:
freetype_vs_gdi.png [163.44 KiB]
Noch nie heruntergeladen

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite 2.0
BeitragVerfasst: Di Mär 03, 2015 18:55 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

die Probleme mit GDI und FreeType konnte ich einigermaßen beseitigen. Ist zwar immer noch nicht 100%ig gleich, aber so wie es jetzt ist kann man es denke ich durchgehen lassen.

Neben den kleinen Verbesserungen hab ich auch den Renderer für OpenGLES geschrieben. Das Ganze basiert auf der dglOpenGLES.pas. Bis jetzt ist nur mein RaspberryPi als Testsystem in Frage gekommen. Was anderes hab ich leider nicht hier. Ich hab mir natürlich Mühe gegeben das so unabhängig wie möglich zu gestalten, aber zwischen den einzelnen OpenGLES Versionen gibt es ja doch relativ große Unterschiede. Für OpenGLES 2.0 sollte es aber laufen.

Den aktuellen Code gibt es wie immer im git Repo (siehe oben). Und hier noch ein Bild, wie das Ganze aussieht:
Dateianhang:
IMAG0001.jpg [256.79 KiB]
Noch nie heruntergeladen


MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite 2.0
BeitragVerfasst: Sa Mär 07, 2015 13:20 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

ich hab dem Projekt den letzten Feinschliff gegeben, noch einige kleine Unschönheiten beseitigt und drei Beispiel-Anwendungen hinzugefügt. Damit sind die Arbeiten ersteinmal abgeschlossen und ich kann voller Stolz das erste offizielle Release (v1.0.0.0) präsentieren :)
Links wie immer im ersten Post.

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.033s | 21 Queries | GZIP : On ]