Opengl Text , jetzt mit Ausgabe eines Strings
-
- Beiträge: 210
- Registriert: Do 24. Jan 2013, 21:22
Opengl Text , jetzt mit Ausgabe eines Strings
Hallo,
ich habe mal an meiner Opengl Text Geschichte weiter gebastelt.
Jetzt mit Ausgabe von kompletten String's.
Solange es das neue Forum noch nicht gibt , lege ich die Files mal auf meiner Hompage ab.
http://www.flz-vortex.de/LAZ_OPENGL_TEX ... GL_TEXT.7z
Einfach mal anschauen und spielen.
Gruß
Frank
ich habe mal an meiner Opengl Text Geschichte weiter gebastelt.
Jetzt mit Ausgabe von kompletten String's.
Solange es das neue Forum noch nicht gibt , lege ich die Files mal auf meiner Hompage ab.
http://www.flz-vortex.de/LAZ_OPENGL_TEX ... GL_TEXT.7z
Einfach mal anschauen und spielen.
Gruß
Frank
www.flz-vortex.de
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Ich wollte, es probieren, aber so wie es scheint, läuft dies nur unter Windows.
Dein dglOpenGL.pas würde ich mit der neusten Version ersetzten, ansonsten geht gar kein OpenGL unter Linux.
Du hast eine Version erwischt, welche mit TRect Probleme hat.
PS: Ich habe deine Zeile 130 in der unti1 ein wenig angepasst, jetzt läuft es auch mit Linux.
PS2:
Hier kannst du problemlos alle ASCII-Zeichen von #32 bis #127 aufnehmen.
Bei dir fehlt zB. das $.
Dein dglOpenGL.pas würde ich mit der neusten Version ersetzten, ansonsten geht gar kein OpenGL unter Linux.

Du hast eine Version erwischt, welche mit TRect Probleme hat.
PS: Ich habe deine Zeile 130 in der unti1 ein wenig angepasst, jetzt läuft es auch mit Linux.
Code: Alles auswählen
hauptpfad := ExtractFilePath(ParamStr(0));
Code: Alles auswählen
const charlist='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'+ // Standard
'äÄüÜöÖß?.,-#/\!\"%&()='' :;<>{}[]@€+-*'+ // Sonderzeichen
'ΑαΒβΓγγχΔδΕεΖζΗηΘθΙιΚκΛλΜμΝνΞξΟοΠπΡρΣσΤτΥυΦφΧχΨψΩω'; // Griechisches Alphabet
Bei dir fehlt zB. das $.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Wenn du das dglOpenGL durch die Units gl und glu ersetzt, die mit FPC mitkommen, und in FormCreate das zugehörige "InitOpenGL", "ReadExtensions", "ReadImplementationProperties" entfernst, dann läuft es auch unter Linux, und auf Rechnern mit schmalbrüstigem OpenGL (wie meinem). Das heißt "fast", denn den Backslash, den du in FormCreate an den "hauptpfad" anhängst, musst du durch einen normalen Slash ersetzen, oder am besten gleich "PathDelim" nehmen, das geht in beiden Welten.
Code: Alles auswählen
uses [...], OpenGLContext, gl, glu, //dglOpenGL, [...]; // auch aus der Triangulations-Unit und dem Projekt entfernen.
procedure TForm1.FormCreate(Sender: TObject);
begin
zaehler:=1;
zdiff:=0.2;
z:=-3;
hauptpfad:=extractfiledir(paramstr(0))+PathDelim;
// Opengl init
//InitOpenGL;
OpenGLControl.MakeCurrent;
//ReadExtensions;
//ReadImplementationProperties;
// Fontliste erzeugen
FreeSans_triangle_font.fontfile:=hauptpfad+'FreeSans.ttf';
FreeSans_triangle_font.UTF8_Charlist:=charlist;
FreeSans_triangle_font.erzeuge;
end;
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Ich mache alles mit dieser Unit, die ist viel aktueller als gl unf glu.Wenn du das dglOpenGL durch die Units gl und glu ersetzt, die mit FPC mitkommen
Code: Alles auswählen
, und in FormCreate das zugehörige "InitOpenGL", "ReadExtensions", "ReadImplementationProperties" entfernst, dann läuft es auch unter Linux, und auf Rechnern mit schmalbrüstigem OpenGL (wie meinem).
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 210
- Registriert: Do 24. Jan 2013, 21:22
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Hallo ,
Die geistert überall auf meinem Rechner rum und dann schnapp ich sie mir einfache und unter WINDOWS läuft es und dann mach ich mir keine Gedanken um Linux , weil ich davon keinen Schimmer habe.
Danke für das $-Zeichen .
Ist schon klar , das man sich den Ascii-Zeichensatz via Schleife von #32 bis #127 holen könnte.
Mir ging es aber auch um diverse Sonderzeichen , die teils weit ab in der Unicode-Tabelle abgelegt sind.
Und wenn man dann die komplette Unicode-Tabelle in Tiangulierter Form als Display-Liste erzeugen würde gäbe es
1) eine Speicherverschwendung sondergleichen
2) eine unerträgliche Wartezeit in der Create-Phase , wegen der nötigen Triangulierung der Zeichen.
Und mit meiner Char-Konstenliste nehme ich nur die Zeichen , die ich auch wirklich verwenden möchte.
http://lazarusforum.de/viewtopic.php?f=25&t=10235
Ich bin halt so vergesslich und weil ich mit Linux noch nichts am Hut habe , ist das wieder untergegangen.
Ist aber schön , das ihr das Demo mit so ein paar kleineren Änderungen zum Laufen bekommen habt.
Aber was haltet ihr den allgemein von dieser Vorgehensweise (mit den triagulierten Zeichensätzen in Displaylisten) , brauchbar oder nicht ?
Mathias , wäre das nicht auch ein Seite wert , für dein Opengl 3.3 Tutorial?
Die beiden Units (BeRoTriangulation.pas und clipper.pas) kann man auch durch andere Triangulierungs-Routinen ersetzen , wenn man was einfacheres zur Verfügung hat.
Hier geht es ja nur darum , die Polygone , die man aus den Fonts bekommt in Dreieck zu konvertieren um die Ausgabe per Opengl möglich zu machen.
Gruß
Frank
Irgendwie schaffe ich es immer , das ich eine veraltete dglOpenGL.pas habe .Mathias hat geschrieben: Dein dglOpenGL.pas würde ich mit der neusten Version ersetzten, ansonsten geht gar kein OpenGL unter Linux.![]()
Du hast eine Version erwischt, welche mit TRect Probleme hat.
PS: Ich habe deine Zeile 130 in der unti1 ein wenig angepasst, jetzt läuft es auch mit Linux.PS2:Code: Alles auswählen
hauptpfad := ExtractFilePath(ParamStr(0));
Hier kannst du problemlos alle ASCII-Zeichen von #32 bis #127 aufnehmen.Code: Alles auswählen
const charlist='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'+ // Standard 'äÄüÜöÖß?.,-#/\!\"%&()='' :;<>{}[]@€+-*'+ // Sonderzeichen 'ΑαΒβΓγγχΔδΕεΖζΗηΘθΙιΚκΛλΜμΝνΞξΟοΠπΡρΣσΤτΥυΦφΧχΨψΩω'; // Griechisches Alphabet
Bei dir fehlt zB. das $.
Die geistert überall auf meinem Rechner rum und dann schnapp ich sie mir einfache und unter WINDOWS läuft es und dann mach ich mir keine Gedanken um Linux , weil ich davon keinen Schimmer habe.
Danke für das $-Zeichen .
Ist schon klar , das man sich den Ascii-Zeichensatz via Schleife von #32 bis #127 holen könnte.
Mir ging es aber auch um diverse Sonderzeichen , die teils weit ab in der Unicode-Tabelle abgelegt sind.
Und wenn man dann die komplette Unicode-Tabelle in Tiangulierter Form als Display-Liste erzeugen würde gäbe es
1) eine Speicherverschwendung sondergleichen
2) eine unerträgliche Wartezeit in der Create-Phase , wegen der nötigen Triangulierung der Zeichen.
Und mit meiner Char-Konstenliste nehme ich nur die Zeichen , die ich auch wirklich verwenden möchte.
Das mit dem 'PathDelim' hatten wir ja schon in meinem ersten Beitrag zu den Opengl-Chars .wp_xyz hat geschrieben:Code: Alles auswählen
uses [...], OpenGLContext, gl, glu, //dglOpenGL, [...]; // auch aus der Triangulations-Unit und dem Projekt entfernen. procedure TForm1.FormCreate(Sender: TObject); begin zaehler:=1; zdiff:=0.2; z:=-3; hauptpfad:=extractfiledir(paramstr(0))+PathDelim; // Opengl init //InitOpenGL; OpenGLControl.MakeCurrent; //ReadExtensions; //ReadImplementationProperties; // Fontliste erzeugen FreeSans_triangle_font.fontfile:=hauptpfad+'FreeSans.ttf'; FreeSans_triangle_font.UTF8_Charlist:=charlist; FreeSans_triangle_font.erzeuge; end;
http://lazarusforum.de/viewtopic.php?f=25&t=10235
Ich bin halt so vergesslich und weil ich mit Linux noch nichts am Hut habe , ist das wieder untergegangen.
Ist aber schön , das ihr das Demo mit so ein paar kleineren Änderungen zum Laufen bekommen habt.
Aber was haltet ihr den allgemein von dieser Vorgehensweise (mit den triagulierten Zeichensätzen in Displaylisten) , brauchbar oder nicht ?
Mathias , wäre das nicht auch ein Seite wert , für dein Opengl 3.3 Tutorial?
Die beiden Units (BeRoTriangulation.pas und clipper.pas) kann man auch durch andere Triangulierungs-Routinen ersetzen , wenn man was einfacheres zur Verfügung hat.
Hier geht es ja nur darum , die Polygone , die man aus den Fonts bekommt in Dreieck zu konvertieren um die Ausgabe per Opengl möglich zu machen.
Gruß
Frank
www.flz-vortex.de
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Dieses hier ist die neuste Version und unterstützt sogar OpenGL 4.6.Irgendwie schaffe ich es immer , das ich eine veraltete dglOpenGL.pas habe .
https://github.com/SaschaWillems/dglOpe ... OpenGL.pas
Ich würde mal die HD nach allen dglOpenGL.pas durchsuchen und alle löschen. Die neuste Version kannst dann in deinen Unit-Pfad aufnehmen.
Gllisten gibt es hier nicht mehr. Aber man könnte die Koordinaten in eine Vertex-Array speichern.Mathias , wäre das nicht auch ein Seite wert , für dein Opengl 3.3 Tutorial?
Wen ich mal Zeit und Lust habe, kann ich deine Unit mal genauer angucken, soviel ich weis, hast du die auch von irgendwo kopiert.
Vielleicht kann man da noch etwas abspecken.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 210
- Registriert: Do 24. Jan 2013, 21:22
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Hallo Mathias,
Nach der Triangulation mit BeRoTriangulation.pas sind ja die Buchstaben nur noch eine Sammlung von Dreiecken und die müßten dann in dein vertex-array rein.
BeRoTriangulation.pas von Benjamin Rosseaux , der übrigens auch in der Autorenliste von dglOpenGL.pas zu finden ist.
Und um an die Polyon-Daten der Fonts zu kommen benutze ich EasyLazFreeType (Bestandteil von LAZ) .
Die anderen Units habe ich gebastelt .
Gruß
Frank
danke für den LINK zur aktuellen dglOpenGL.pas .Mathias hat geschrieben:Dieses hier ist die neuste Version und unterstützt sogar OpenGL 4.6.Irgendwie schaffe ich es immer , das ich eine veraltete dglOpenGL.pas habe .
https://github.com/SaschaWillems/dglOpe ... OpenGL.pas
Ich würde mal die HD nach allen dglOpenGL.pas durchsuchen und alle löschen. Die neuste Version kannst dann in deinen Unit-Pfad aufnehmen.
Gllisten gibt es hier nicht mehr. Aber man könnte die Koordinaten in eine Vertex-Array speichern.Mathias , wäre das nicht auch ein Seite wert , für dein Opengl 3.3 Tutorial?
Nach der Triangulation mit BeRoTriangulation.pas sind ja die Buchstaben nur noch eine Sammlung von Dreiecken und die müßten dann in dein vertex-array rein.
clipper.pas ist von Angus Johnsonsoviel ich weis, hast du die auch von irgendwo kopiert.
BeRoTriangulation.pas von Benjamin Rosseaux , der übrigens auch in der Autorenliste von dglOpenGL.pas zu finden ist.
Und um an die Polyon-Daten der Fonts zu kommen benutze ich EasyLazFreeType (Bestandteil von LAZ) .
Die anderen Units habe ich gebastelt .
Gruß
Frank
www.flz-vortex.de
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Code: Alles auswählen
// KB_Eigenschaft des Punktes , auf Kontur oder Bezier
if (_glyph^.outline.flags^[j] and TT_Flag_On_Curve) <>0
then
polypunkt.kb_eigenschaft:=Konturpunkt
else
polypunkt.kb_eigenschaft:=Bezierpunkt;
Zugriff auf Element 10 von 0 bis 9
Code: Alles auswählen
TT_TouchTable = array[0..9] of byte;
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Opengl Text , jetzt mit Ausgabe eines Strings
Da du nur Windows benutzt, könnte dies noch weiter helfen: https://wiki.delphigl.com/index.php/wglUseFontBitmaps
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot