Text in OpenGLcontrol

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Text in OpenGLcontrol

Beitrag von Frank Ranis »

Hallo Jole,

Jole hat geschrieben:Also bei mir läuft dein Demo unter Linux Mint 18.1(64) absolut fehlerfrei. Das einzige Problemchen wurde ja gelöst.


danke für deine Antwort , das wollte ich hören.

Ich werde dann am Programm weiter machen , sobald ich Zeit habe .

Gruß

Frank
www.flz-vortex.de

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text in OpenGLcontrol

Beitrag von Mathias »

Also bei mir läuft dein Demo unter Linux Mint 18.1(64) absolut fehlerfrei.

Gibt es einen Link, auf die fertige Version, oder muss man die '\' selbst abändern ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Text in OpenGLcontrol

Beitrag von Jole »

Mathias hat geschrieben:
Also bei mir läuft dein Demo unter Linux Mint 18.1(64) absolut fehlerfrei.

Gibt es einen Link, auf die fertige Version, oder muss man die '\' selbst abändern ?

??? Versteh ich jetzt nicht richtig. Das einzige Problem bei mir war das fehlende TRect, sonst nix.

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Text in OpenGLcontrol

Beitrag von Frank Ranis »

Hallo Mathias , Hallo Jole ,

Leute , ihr bringt mich an den Rand des Wahnsinns , einfach die Beiträge richtig durchlesen , dann ist doch alles klar .
Ihr redet völlig aneinander vorbei .

Mathias hat geschrieben:Gibt es einen Link, auf die fertige Version, oder muss man die '\' selbst abändern ?


Auf der Seite 3 , mein Post 'von Frank Ranis » 3. Feb 2017, 08:21 Re: Text in OpenGLcontrol' , da wo das Bildchen mit dem Blümchen-Glyph dargestellt ist , der Anhang ' glyph_3d_viewer_V1_1.zip ' .

Jole hat geschrieben:??? Versteh ich jetzt nicht richtig. Das einzige Problem bei mir war das fehlende TRect, sonst nix.


Mathias meint den Quelltext-Teil mit dem Einstellen des absoluten Pfades zur Font-Datei , hat nichts mit dem OpenGl zu tun.

Neuer Quelltext

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
 label12.Caption:=version;
 
 hauptpfad := extractfiledir(ParamStr(0)) + DirectorySeparator; // Das wichtigste.        <-- hier die Sache mit dem DirectorySeparator
 FTTFFont:=TFreeTypeFont.create;
 FTTFFont.Hinted:=false;
 FTTFFont.Name:=hauptpfad+'FreeSans.ttf';
 caption:=FTTFFont.Name;
 spinedit1.MaxValue:=FTTFFont.GlyphCount-1;
end;


Alter Quelltext

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  hauptpfad:=extractfiledir(paramstr(0));
 
  FTTFFont:=TFreeTypeFont.create;
  FTTFFont.Hinted:=false;
  FTTFFont.Name:=hauptpfad+'\FreeSans.ttf';    // <-- das mit dem ' \ ' haut nur unter Windows gut hin
  caption:=FTTFFont.Name;
  spinedit1.MaxValue:=FTTFFont.GlyphCount-1;
end;



Gruß

Frank
www.flz-vortex.de

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Text in OpenGLcontrol

Beitrag von Jole »

Leute , ihr bringt mich an den Rand des Wahnsinns, ...

Das ist sicher nicht unsere Absicht!

Mathias meint den Quelltext-Teil mit dem Einstellen des absoluten Pfades zur Font-Datei , hat nichts mit dem OpenGl zu tun.

Das es nichts mit OpenGL zu tun hat ist mir schon klar, aber ich hab das mit dem "\" deshalb nicht verstanden weil die Zip die ich am Freitag runter geladen hab bereits den neuen Quelltext enthält.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text in OpenGLcontrol

Beitrag von Mathias »

Auf der Seite 3 , mein Post 'von Frank Ranis » 3. Feb 2017, 08:21 Re: Text in OpenGLcontrol' , da wo das Bildchen mit dem Blümchen-Glyph dargestellt ist , der Anhang ' glyph_3d_viewer_V1_1.zip ' .

Mit diesem Link, läuft es bei mir jetzt auch. Der Link war unter dem Bild versteckt. :oops:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Text in OpenGLcontrol

Beitrag von Frank Ranis »

Hallo Jole , Hallo Mathias ,

alles wieder gut , mein PH-Wert ist wieder NEUTRAL .

Ich habe halt das Problem , das ich kein Ahnung von Linux habe und dann halt auf TESTER angewiesen bin .
LAZ_USER möchten ja möglichst Plattformunabhängige Prog's schreiben und die müssen dann auf der Zielplattform getestet werden.

Solbald es die Zeit erlaubt werden ich das Prog etwas aufräumen und zusätzlich eine neue Klasse für den gesamten Font bauen.

Da die Konvertierung der einzelnen Glyph's ja eine gewisse Zeit dauert und man das dann tunlichst nicht immer zur Laufzeit machen sollte bleibt zu Überlegen , wie man einen schnellen Zugriff auf die fertigen 3D-Glyph-Daten bekommt.

Folgende Gedanken:

1) Man könnte beim Start einer Anwendung den kompletten Font konvertieren und dann die Glyph's komplett (Triangulierte 3D-Form) in einer Liste vorrätig halten.
Dauert aber auch und es kann zu Startverzögerungen kommen.
Per Char-Index (Zeichen für Zeichen aneinandergereiht ) werden dann die Texte im OpenGl gezeichnet.

2) Oder man macht nur die Konvertierung des Deckels (2D) und extrudiert diese dann während der Laufzeit .
Bringt aber auch nicht den Super-Zeitgewinn .

3) Man macht die Konvertierung überhaupt nicht in der Anwendung , sondern schreibt einen Konverter und legt die triangulierten Daten in einer Datei ab.
So in der Art Font3DKonverter [Parameter-Fontdatei.ttf] [Parameter-Outputdatei.font3d] .
Dann müßte man sich nur ein Fileformat überlegen oder sich an ein vorhandenes Dateiformat halten.
In der Annwedung läd man dann die bereits konvertierten Daten (*.font3d) und das ginge RatzFatz .

Ein weitere Zeitgewinn wäre auch , die 3D-Daten dann per Displaylisten (also bereits OpenGl-compiliert) im Speicher abzulegen.
Das könnte dann direkt nach dem laden einer *.font3d-Datei erfolgen.

Gruß

Frank
www.flz-vortex.de

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text in OpenGLcontrol

Beitrag von Mathias »

Ein weitere Zeitgewinn wäre auch , die 3D-Daten dann per Displaylisten (also bereits OpenGl-compiliert) im Speicher abzulegen.

Was auch noch eine gute Sache wäre.
Wen man die Vertex-Koordinaten direkt als Stream als Float-Array speichern würde.

Dann könnte man die Daten direkt mit

Code: Alles auswählen

glBufferData(GL_ARRAY_BUFFER, ....
, ohne Konvertierung ins VRAM schreiben.

Man müsste nur die _3D_Glyph.Dreiecklist3D in eine Datei schreiben.

Code: Alles auswählen

 for i:=0 to _3D_Glyph.Dreiecklist3D.Count-1 do
 begin
  dreieck:=Tdreieck(_3D_Glyph.Dreiecklist3D[i]);
  glNormal3f(dreieck.nv.x,
             dreieck.nv.y,
             dreieck.nv.z);
  glBegin(GL_polygon);
   glColor3f(0.0,0.0,0.8);
   glVertex3f(dreieck.A.x/fak,dreieck.A.y/fak,dreieck.A.z/fak);
   glVertex3f(dreieck.b.x/fak,dreieck.b.y/fak,dreieck.b.z/fak);
   glVertex3f(dreieck.c.x/fak,dreieck.c.y/fak,dreieck.c.z/fak);
  glEnd();
 end
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Text in OpenGLcontrol

Beitrag von Frank Ranis »

Hallo Mathias,

hast Du zum Thema glbufferdata ein kleines Beispiel ?

Gruß

Frank
www.flz-vortex.de

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text in OpenGLcontrol

Beitrag von Mathias »

Habe ich, muss es am Abend raussuchen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text in OpenGLcontrol

Beitrag von Mathias »

In der Methode InitScene, sieht man gut, wie ich die Daten via glBufferData(... ins VRAM lade.

Anstelle der Const Triangle kann man auch einen Zeiger auf eine dynamische Array nehmen.

Das sieht dann etwa so aus:

Code: Alles auswählen

var
  GLfloatArray: array of GLfloat;
...
   glBufferData(GL_ARRAY_BUFFER, SizeOf(GLfloat) * Length(GLfloatArray), Pointer(GLfloatArray), GL_STATIC_DRAW);               


Ich hoffe dies hilft dir weiter.
Dateianhänge
Tutorial 01-2 - Quad and Triangle - erster Shader.zip
(127.72 KiB) 135-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Text in OpenGLcontrol

Beitrag von Frank Ranis »

Hallo Mathias,

vielen Dank für dein Demoprojekt.

Leider bekomme ich das Prog nicht auf allen Windows-Systemen zum laufen.
Ich schreibe meine Progs derzeit immer noch unter Win-XP und wenn sie dort laufen , teste ich mit Win-7/Win-8,Win-10.

Das hat den einfachen Grund , das ich und viele meiner Kollegen immer noch solche alten Rechner haben und alle meine Prog's überall laufen sollen.
Jetzt kommt bestimmt der Spruch , wer benutzt denn noch so alte Kamellen , aber das ist halt so.
Mein aktuelles FLZ_Vortex-Projekt (Aerodynamik-Fliegerprog / http://www.flz-vortex.de ) läuft sogar noch unter Win-98 , ist allerdings derzeit noch mit Delphi-7 programmiert .
Eine Portierung nach Lazarus steht noch aus , kommt aber irgendwann mal .
Die Geschichte mit den 3D-Fonts werde ich dort dann auch brauchen können.

Unter XP steigt dein Prog in der

function Initshader(VertexDatei, FragmentDatei: string): GLuint;

an der Stelle

ProgramObject := glCreateProgram();

aus.

Unter Win-7 und größer funzt es .
Vermutung ist , das die alten Grafikkarten / Treiber mit bestimmten aktuellen OpenGl-Funktionen einfach nicht klarkommen ,oder es schlicht weg am Win-XP selber liegt, keine Ahnung was die da intern so treiben.

Die Geschichte mit glBufferData hört sich zwar spannend an , ich werde das aber (aus obrigen Grund ) nicht benutzten .

So stehen dann Displaylisten wieder auf dem Zettel.

Gruß

Frank
www.flz-vortex.de

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text in OpenGLcontrol

Beitrag von Mathias »

Am OS liegt dies nicht, es is die Graka oder der Treiber.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text in OpenGLcontrol

Beitrag von Mathias »

Kannst du die Ausgabe des Programms im Anhang posten ?
Dateianhänge
Version abfragen.zip
(128.78 KiB) 137-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten