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

Aktuelle Zeit: Fr Apr 26, 2024 11:24

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Feedbackmail
BeitragVerfasst: Do Jul 22, 2004 22:55 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3827
Wohnort: Tespe (nahe Hamburg)
Hi,
habe im Rahmen einer länger E-Mail etwas den Header betreffend erhalten und will Euch dies nicht vorenthalten...
Zitat:
'dglOpenGl.pas' beinhaltet meiner Meinung einen Overkill: die Re-Definition aller Opengl 1.1 Funktionen und das zeitraubende Beschaffen der Funktionsaddressen via wglGetProcAdress und GetProcAdress. Die in der Delphi Opengl.pas definierten 1.1 'gl..' und 'glu..' Funktionen sind in der 'implementation'-Sektion mit 'external opengl32;' bzw mit 'external glu32;' beschrieben was letztlich bedeutet dass der LOADER beim laden die relevanten EntryPoints aus der Windows 'Opengl32.dll' und 'glu32.dll' findet und einsetzt. Da wirklich nur die im Programm 'verwendeten' Funktions-EntryPoints eingesetzt werden, verzoegert sich der Ladevorgang nicht merklich. In 'dglOpengl.pas' werden ALLE EntryPoints ermittelt, ob ich sie nun brauche oder nicht!
Das gleiche gilt uebrigens auch fuer die 1.1 'wgl..'-Funktionen, die in Delphi-Windows.pas Unit definiert sind und - da Windows.pas Teil der Run-Time Lib ist - alle in 'rtl.dcp' enthalten sind. Auch hier ermittelt der Loader die EntryPoints beim laden des Programs - und zwar nur die wirklich verwendeten, nicht einfach alle.

Wenn ich also in dglOpenGl.pas alle 1.1 Definitionen - in der interface und implementation Sektion - gegen die original Delphi Opengl.pas Definitionen ersetze, verliere ich nichts an Funktionalitaet, reduziere aber die Programm-Startup Zeit erheblich, da ich weder die EntryPoints fuer die 1.1 Funktionen noch die fuer die 'glu..'-Funktionen 'holen' muss. Das macht der Loader. - Ausserdem werden 'opengl32.dll' und 'glu32.dll' gleich mitgeladen...

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 23, 2004 07:23 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Hm... scheint auf den ersten Blick nicht falsch zu sein, aber:

1.) Ob sich die Ladezeit wirklich sooooo drastisch verschlechter ist fraglich.
2.) ein Mix aus dglOpenGL und Borland's OpenGL halte ich für nicht Sinnvoll

und 3.) (das ist der eigentliche Punkt): durch dglOpenGL habe ich immerhin die Möglichkeit, eine beliebige OpenGL-DLL zu verwenden (z.B. Mesa). Außerdem ist mir persönlich das dynamische Laden von DLLs lieber, da man dann mit einer entsprechenden Fehlermeldung reagieren kann, sollte es schief gehen. Die lapidare Windows-Meldung "xxx.dll fehlt blabla" ist nicht unbedingt sonderlich hilfreich.

Jedoch kann man in einem recht geben: eigentlich ist es unpraktisch, alle Extensions zu laden, auch wenn man sie nicht benötigt. Deswegen könnte man ja überlegen, ob man die zu ladenden Extensions per Parameter angeben kann: LoadExtension("ARB_multi_texture ARB_vertex_program"); Man könnte dann auch selber alle existierenden Extension laden: LoadExtensions(gLGetString(GL_EXTLIST));

Ob sich der Aufwand wegen ein paar Sekunden, wenn nicht gar Millisekunden Ladezeit wirklich lohnt, halte ich für fragwürdig bis eher sogar unwahrscheinlich!

Fazit: Nettes Feedback, jedoch glaub ich das man aus einer Mücke auch einen Elefanten machen kann. Denn bei einem kompletten Game dürfte die Zeit zum Laden der Funktionen das geringere Übel sein, verglichen zum Content. Es sei denn, man ist so bescheuert und lädt die Funktionen in jedem Frame erneut. Könnte sich mittlerweile ja was geändert haben. ;)

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 23, 2004 10:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich sehen das sehr ähnlich. Es wäre schon möglich das so zu gestalten wie das auch Tom Nuydens gemacht hat. Und zwar auf Befehl einzelne Extensions zu laden. Allerdings rechtfertigt der Aufwand in meinen Augen den Geschwindigkeitsvorteil nicht. Man sollte außerdem nicht außer acht lassen, dass diese Zeit (auch wenn es 5 Sekunden wären) nur ein einziges Mal (pro Instanze) benötigt werden. Und das ist durchaus verkraftbar. Vor allem, da man so den Vorteil hat, dass man jede beliebige DLL einbinden kann.

Aber dennoch ist es auf jeden Fall schön Feedback zu bekommen. Das zeigt einem ja, dass die Arbeit doch nicht ganz umsonst war. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 23, 2004 12:37 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3827
Wohnort: Tespe (nahe Hamburg)
Nein, dass auf jeden Fall nicht. Wenn Du das gedacht hast, schau mal welcher Header inzwischen den Source Codes von Sulcao beiliegt ;)

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 79 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.085s | 17 Queries | GZIP : On ]