Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi OpenGL Beschleunigungs Routinen oder Codeoptimierung (https://www.delphipraxis.net/41353-opengl-beschleunigungs-routinen-oder-codeoptimierung.html)

Binärbaum 5. Mär 2005 13:15

Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
 
Zitat:

Zitat von sniper_w
Genau. Aber wenn die Datei nicht all zu gross ist und es nur einmal am Anfang des Programms geladen wird, dann IMHO spielt das keine grosse Rolle. (nur die *.txt Dateien sind in diesem Fall meistens grösser )

Naja, mwiesbau wollte Dateien mit bis zu 100MB Größe einlesen, da ist das schon nicht ganz unerheblich. Ich weiß zwar nicht, wie oft die Daten eingelesen werden, aber wenn es schneller gehen soll, muss man weg vom Textformat und Streams nutzen.
Die heutigen Festplatten haben zwar meist eine Lesegeschwindigkeit, dass die Größenverminderung der Datei nicht so sehr ins Geewicht fällt. Es geht mir vielmehr um diese StrToFloat-Funktion, denn diese ist nicht gerade schnell. Bei einer 100MB großen Datei fällt diese Umwandlung mehr ins Gewicht als das reine Lesen von der Festplatte.

MfG
Binärbaum

mwiesbau 5. Mär 2005 15:01

Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
 
Erspare ich mit beim Enlesen über einen Stream das umwandeln??
bzw. Ersetzens des Punktes durch ","??

Was ich bräuchte,
Ein Format in dem ich grosse Datenmengen Speichern kann, auf die quasi in Echtzeit zugegriffen werden kann.
Da ich mir vorstelle dass der Anwender beim Laden der Punktwolke diese sozusagen aus einer Entfernung sieht die nur eine geringe Qualität erfordert (grober Raster).
Der Benutzer bewegt sich dann auf die Punktwolke zu und die Punkte werden sozusagen nachgeladen (feiner Raster) und angezeigt.


Habe bis jetzt noch nicht mit dieser Methode des einlesens von Daten gearbeitet.

@SniperW: bzgl. Frustum Culling, Octrees.

Da ich ja jetzt die Displaylisten verwende gibt es eigentlich nicht mehr viel zu Rendern in meiner anwendung.
d.h.: diese Methoden würden mir dann keinen erheblichen geschwindigkeitsvorteil mehr bringen richtig?

Übrigens die Daten werden nur beim Programmstart eingelesen und Bleiben dann unverändert (Statische Punktwolke).

Danke für eure kompetenten ratschläge, ihr helft mir hier richtig weiter :thumb:

sniper_w 5. Mär 2005 15:39

Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
 
Zitat:

Da ich ja jetzt die Displaylisten verwende gibt es eigentlich nicht mehr viel zu Rendern in meiner anwendung.
d.h.: diese Methoden würden mir dann keinen erheblichen geschwindigkeitsvorteil mehr bringen richtig?
In OpenGL gibt es 2 Seiten, "Server" und "Client". Alles was für dich deine Garka erlädigt (z.b DisplayListen, Matrix Manipulation, Licht-, Blend-, u.s.w., Berechnungen) sind "ServerSide" Features, die selbst sehr dazu optimiert sind (b.z.w. GPU). ClientSide bist du, schickst Daten, wählst verschiedenen "States" u.s.w. an Garka.
Also, Optimierungen sollten an Server- als auch an ClientSide durchgeführt sein.
Und wenn du immer nur ein Teil denes Wollkes siehst, dann werden sie wohl einen Geschwindigkeitsvorteilbringen.

mwiesbau 5. Mär 2005 15:56

Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
 
mal eine Frage,

es gibt doch die möglichkeit mehrere Displylisten zu erstellen,
könnte ich z.b.: 3 Displaylisten erstellen und in jede Displaliste 30MB laden, beim durchfahren wird dann die jeweils gültige angezeigt.
Ist das schneller als wenn alle Punkte nur in einer Liste liegen?

Binärbaum 5. Mär 2005 16:14

Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
 
Zitat:

Zitat von mwiesbau
Erspare ich mit beim Enlesen über einen Stream das umwandeln??
bzw. Ersetzens des Punktes durch ","??

Was ich bräuchte,
Ein Format in dem ich grosse Datenmengen Speichern kann, auf die quasi in Echtzeit zugegriffen werden kann.
...
Übrigens die Daten werden nur beim Programmstart eingelesen und Bleiben dann unverändert (Statische Punktwolke).

Ja, bei Streams braucht man keine Punkte durch "," ersetzen, wenn man die Daten schon als Double (oder Real, oder Single) speichert.
Zitat:

Zitat von mwiesbau
es gibt doch die möglichkeit mehrere Displylisten zu erstellen,
könnte ich z.b.: 3 Displaylisten erstellen und in jede Displaliste 30MB laden, beim durchfahren wird dann die jeweils gültige angezeigt.
Ist das schneller als wenn alle Punkte nur in einer Liste liegen?

Ja, diese Möglichkeit wäre vorteilhaft, vor allem, wenn stets nur ein Teil der Punkte angezeigt werden muss. Dazu teilt man diese in mehrere Display-Listen ein und lädt nur die benötigten Daten.

MfG
Binärbaum


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz