Einstieg OpenGL => Textausgabe
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Einstieg OpenGL => Textausgabe
Zum Thema Umlaute und OpenGL. Wen man nur die Standardzeichen #32-#127 verwendet, kann man die in eine Bitmap ablegen und hat dann später sehr schnellen Zugriff, wen die Bitmap im VRAM ist. Auch das Rendering in einem Satz ist sehr einfach, eine forto Schleife auf jedes Zeichen, fertig. Will man UTF8 verwenden ist dies fast unmöglich.
Ein Kompromiss gibt es, man wandelt den UTF8-Text in ein Standard-ASCII Code um, dann hat man Zugriff von #32-#255. Dann ist es etwas so wie dazumal zu TP Zeiten. Die gängigen Sonderzeichen und Umlaute hat man dann zu Verfügung.
Was auch geht, wen das Text statisch ist, kann man den ganz am Anfang in verschieden Bitmaps rendern.
Ein Kompromiss gibt es, man wandelt den UTF8-Text in ein Standard-ASCII Code um, dann hat man Zugriff von #32-#255. Dann ist es etwas so wie dazumal zu TP Zeiten. Die gängigen Sonderzeichen und Umlaute hat man dann zu Verfügung.
Was auch geht, wen das Text statisch ist, kann man den ganz am Anfang in verschieden Bitmaps rendern.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Einstieg OpenGL => Textausgabe
Darf ich annehmen, Du meinst in etwa das, was ich hier zusammengebaut hatte ?Mathias hat geschrieben: Sa 1. Mär 2025, 08:38 Zum Thema Umlaute und OpenGL. Wen man nur die Standardzeichen #32-#127 verwendet, kann man die in eine Bitmap ablegen und hat dann später sehr schnellen Zugriff, wen die Bitmap im VRAM ist. Auch das Rendering in einem Satz ist sehr einfach, eine forto Schleife auf jedes Zeichen, fertig.
=>
viewtopic.php?p=141897#p141897
.
Re: Einstieg OpenGL => Textausgabe
Klar, ich kämpfe mich durch.af0815 hat geschrieben: Sa 1. Mär 2025, 07:46 Du wirst halt irgendwo einen Kompromiss eingehen müssen.
Irgendeine Lösung muss am Ende das Bitmap ersetzen,
in das ich im Moment meine Daten und Texte reinschreibe.
Aktuell mappe ich dieses Bitmap ganz klassisch auf einen Canvas.
Angesichts HiDPI und der Skalierungs-Optionen (%) von Windows
ist sowas aber echt lästig zu programmieren.
Und je nach Windows-Einstellungen auf dem jeweiligen Rechner
sieht es auch immer anders aus.
Re: Einstieg OpenGL => Textausgabe
So richtig scharf sind die Schriften nicht, aber schon nicht schlecht, diese Lösung.
.
.
- Dateianhänge
-
opengltest6.zip
- (32.82 KiB) 96-mal heruntergeladen
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Einstieg OpenGL => Textausgabe
Ich kenne die TBitmap, an dieser beisst man sich die Zähne aus, Bei Linux und Windows ist sie ganz anders aufgebaut, Und ein Format erzwingen habe ich bis jetzt nicht hingekriegt. Das haben SDL und co,. viel besser gelöst.Aktuell mappe ich dieses Bitmap ganz klassisch auf einen Canvas.
Angesichts HiDPI und der Skalierungs-Optionen (%) von Windows
ist sowas aber echt lästig zu programmieren.
Und je nach Windows-Einstellungen auf dem jeweiligen Rechner
sieht es auch immer anders aus.
Jetzt kommt mir grade eine Idee, du könnten SDL_ttf verwenden und eine surface Font zu erzeugen, welcher du dann für OpenGL verwenden kannst.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Einstieg OpenGL => Textausgabe
Nochmal zurück zu den multichannel signed distance fields,
da habe ich das hier als aktuellstes Projekt gefunden.
Als reiner Pascal-User verstehe ich allerdings absolut kein Wort.
Ich habe keinerlei Idee, wie man damit ein Font-Pärchen .png + .json baut.
https://github.com/soimy/msdf-bmfont-xml
da habe ich das hier als aktuellstes Projekt gefunden.
Als reiner Pascal-User verstehe ich allerdings absolut kein Wort.
Ich habe keinerlei Idee, wie man damit ein Font-Pärchen .png + .json baut.
https://github.com/soimy/msdf-bmfont-xml
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Einstieg OpenGL => Textausgabe
Was auch noch eine Alternative ist, cairo graphics. Damit kannst du auch in eine Art Bitmap rendern, und dies Bitmap dann mit.
Und diese Bitmap ladest du mit glTexImage2D hoch.
Und diese Bitmap ladest du mit glTexImage2D hoch.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Einstieg OpenGL => Textausgabe
Ich sehe, Du hast schon mit Cairo gekämpft ..Mathias hat geschrieben: So 2. Mär 2025, 08:49 Was auch noch eine Alternative ist, cairo graphics. Damit kannst du auch in eine Art Bitmap rendern.
Und diese Bitmap ladest du mit glTexImage2D hoch.
.
viewtopic.php?p=133473#p133473
Dort wird auch Google's Skia-Graphics erwähnt.
Hast Du damit auch mal experimentiert ?
.
Soner hat geschrieben: So 29. Jan 2023, 20:09 Ich würde in deiner Stellle, meine Zeit nicht mit Cairo-Graphics verschwenden, die größten Cairo-Benutzer haben zu Google's Skia-Graphics gewechselt, z.B, Firefox.
Wenn schon dann Skia oder lazarus/components/aggpas.
Haiku-OS verwendet AGG-Graphics für alle Graphicausgaben.
Jemand hat hier Skia für Delphi convertiert.
Zuletzt geändert von PeterS am So 2. Mär 2025, 12:05, insgesamt 1-mal geändert.
Re: Einstieg OpenGL => Textausgabe
Habe gerade gesehen / gefunden daß BGRABitmap auch irgendwas mit oder wie AggPas kann ?
.
https://wiki.freepascal.org/BGRABitmap_AggPas
.
Und BGRABitmap habe ich ja jetzt auf der Platte ..
.
.
https://wiki.freepascal.org/BGRABitmap_AggPas
.
Und BGRABitmap habe ich ja jetzt auf der Platte ..

.
Re: Einstieg OpenGL => Textausgabe
Ich habe jetzt mal das BLUR Beispiel von BGRABitmap modifiziert.
In riesigen Buchstaben sieht das schon eindrucksvoll aus,
aber es muss ja in "normal großer Schrift" ordentlich aussehen.
.
In riesigen Buchstaben sieht das schon eindrucksvoll aus,
aber es muss ja in "normal großer Schrift" ordentlich aussehen.
.
- Dateianhänge
-
blur.zip
- (5.66 KiB) 75-mal heruntergeladen
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Einstieg OpenGL => Textausgabe
Dies habe ich gerade getestet und es funktioniert. Einziges Manko, die Schrift ist ganz normal, von links nach rechts, wie bei einem Canvas mit TextOut. Es sind somit keine Drehungen und Skalierungen möglich,
Hier der wichtige Ausschnitt aus einem C-Programm.
Bei FPC muss man einfach die Unit GL und GLUT einbinden, dann sollte es kein Problem sein,
Hier der wichtige Ausschnitt aus einem C-Programm.
Bei FPC muss man einfach die Unit GL und GLUT einbinden, dann sollte es kein Problem sein,
Code: Alles auswählen
void renderBitmapString(float x, float y, void *font, const char *string) {
const char *c;
glRasterPos2f(x, y);
for (c = string; *c != '\0'; c++) {
glutBitmapCharacter(font, *c);
}
}
....
glColor3f(1.0f, 1.0f, 1.0f); // Weiße Textfarbe
renderBitmapString(-0.9f, 0.4f, GLUT_BITMAP_HELVETICA_18, "Hallo OpenGL!");
renderBitmapString(-0.9f, 0.2f, GLUT_BITMAP_HELVETICA_12, "Ein Dreieck dreht sich im Hintergrund.");
....
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Einstieg OpenGL => Textausgabe
Wäre mir egal, das muss ich mal ausprobieren.Mathias hat geschrieben: So 2. Mär 2025, 16:29 Dies habe ich gerade getestet und es funktioniert. Einziges Manko, die Schrift ist ganz normal, von links nach rechts, wie bei einem Canvas mit TextOut. Es sind somit keine Drehungen und Skalierungen möglich
Hast Du ein Mini-Demo-Programm davon ?
Re: Einstieg OpenGL => Textausgabe
Ich bin nochmal die BGRABitmap Test-Projekte durchgegangen,
und habe das folgende Projekt modifiziert.
Wenn man das Fenster mit der Maus in der Größe verändert, skalieren und "wandern" die Schriften mit.
Auch nicht schlecht, aber halt kein OpenGL mit Programmierer-"Spielplatz".
.
und habe das folgende Projekt modifiziert.
Wenn man das Fenster mit der Maus in der Größe verändert, skalieren und "wandern" die Schriften mit.
Auch nicht schlecht, aber halt kein OpenGL mit Programmierer-"Spielplatz".
.
- Dateianhänge
-
test4lcl.zip
- (8.1 KiB) 97-mal heruntergeladen
-
- Beiträge: 118
- Registriert: Do 20. Jul 2017, 23:47
- OS, Lazarus, FPC: Win7 und Win10
- CPU-Target: xxBit
- Wohnort: Südheide (Schnuckenland)
Re: Einstieg OpenGL => Textausgabe
Ich hab' mir mal das Skia4Delphi für mein Delphi runtergeladen und probiere das gerade mal aus.
Wie es aussieht, ist mindestens FPC-Support angedacht, allerdings vermute ich, in einer recht aktuellen FPC-Version.
Man schaue in die System.Skia.pas:
Wie es aussieht, ist mindestens FPC-Support angedacht, allerdings vermute ich, in einer recht aktuellen FPC-Version.
Man schaue in die System.Skia.pas:
Code: Alles auswählen
{$IFDEF FPC}
{$IF DEFINED(FPC_FULLVERSION) and (FPC_FULLVERSION < 30301)}
{$ERROR Requires at least FPC 3.3.1}
{$ENDIF}
...
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Einstieg OpenGL => Textausgabe
Es gibt eine Version von Skia die mit dem FPC laufen muss. Die ist explizit im Fresnel Projekt erwähnt, da dieses darauf aufsetzt. https://gitlab.com/freepascal.org/lazarus/fresnel
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).