die Tuts haben mir ja schonmal einen netten Einstieg in OpenGL ermöglicht (Danke dafür! ), aber nun hab ich dennoch ein Problem.
Code:
createRenderingContext(
DC,
[opDoubleBuffered],
32,
24,
0, 0, 0,
0);
createRenderingContext läd bei mir meistens verdammt lange (zwischen 10 und 20 Sekunden) und ich hab schon einiges ausprobiert. Wenn ich jedoch gerade aus Delphi heraus kompiliert habe, das Formular schließe und sofort wieder kompilieren lasse geschieht dies in Null komma nix. An der Grafikkarte sollte es nicht liegen, da ich sowohl den neuesten als auch einen älteren Treiber für die Karte getestet habe und auch mit anderen OpenGL-Anwendungen keine Probleme hab. Ich hab auch schon das VCL-Template kompilieren lassen - mit dem gleichen Ergebnis!
Amd Athlon XP 2600+ GeForce FX5200 768 MB Ram Win2000 Prof. Delphi 7 Personal
Das mit der Prozessorlast ist auch sehr komisch. Da schlägt nämlich gar nichts aus!
Auch wenn es kompiliert ist habe ich gerade mal standardmäßige 2 - 5%, anstatt wie im Tutorial beschriebene 100% Auslastung. Die FPS pendeln dabei um die 100 (Bei Scenen wie in den ersten Tuts beschrieben - also eher mikrig )
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ich bezweifel mal stark, dass es direkt an CreateRenderContext liegen wird. Ich denke mal eher es ist irgendetwas drumherum oder so. Der Code in CreateRenderContext ist ein Standardcode. Das wird überall so gemacht und funktioniert eigentlich immer.
Hast du es im Debugger festgestellt, dass er so lange benötigt oder nur wärend er läuft? Reagiert die Anwendung dann noch oder steht sie komplett still. Wo Renderst du denn? OnIdle, Timer oder OnPaint des Forms?
Wenn OnIdle, dann denke ich, dass du das Done := False; vergessen hast! Das dürfte auch die geringe Last erklären. Sollte es das nicht sein können wir dir ohne detailierte Angaben, was du genau machst, nicht sagen was das Problem ist.
Geh mal im Einzelschritt durch die Funktion und schau mal nach welcher Befehl so lange dauert.
- edit -
PixelFormat := ChoosePixelFormat(DC, @PFDescriptor); ist der offensichtliche Haken.
- edit -
Es scheint aber doch ein Hardware oder Treiberproblem zu sein. Ich hab mir mal eine der Demos aus dem Projekt-Forum runtergeladen, die auch so lange dauerte bis es los ging.
Zuletzt geändert von 7eddi am Mi Sep 28, 2005 11:01, insgesamt 1-mal geändert.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Dann step mal bitte rein und schau mal wo es da drinnen hängt. Oder mal auf nem anderen System ausprobieren. Also Exe auf nem anderen Rechner starten oder so.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Anhand der oben ausgewählten Kriterien wählt sie aus einer Liste mit Schätzungsweise 200 Formaten das Passende herraus und liefert dessen Index zurück. Falls das die Frage war. Warum das so lange dauert kann ich dir allerdings nicht sagen.
Sonst tippe ich allerdings auch darauf, dass es ein Treiber problem ist. Auf die Geschwindigkeit der Funktion hat man recht wenig Einflussmöglichkeiten. Was man normal auch nicht haben muss.
Aber das Pixelformat wird doch nur einmal ausgewählt.? Oder irre ich mich da? Offensichtlich wird aber bei jedem Rendern das Programm von einer Funktion aufgehalten. Also kann das mit dem Pixelformat höchstens für den langen Start verantwortlich sein....
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ne ne ist schon okay. Ich denke mal Flash wollte nur herrausfinden ob dein OpenGL Treiber überhaupt angezogen wird oder ob das alles in Software läuft.
Was mich auch ein wenig irritiert ist die Tatsache, dass du lediglich 2-5 % CPU-Last bekommst. Da noch mal die Frage. Womit renderst du denn? Timer, OnIdle. Bei OnIdle muss done aus False gesetzt werden. Oder falls Timer, dann könnte dabei auch der Wert des Timers zu hoch sein.
Mit OnIdle. Wie gesagt dauerts bei anderen Anwendungen und Templates, die nicht von mir sind, auch so lange - daher tippe ich mal auf Außerdelphische-Probleme
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Delphi ist doch sowieso über jeden Zweifel erhaben!
Das bezog sich aber eigentlich darauf, weil du etwas von 2-5% CPU Last gesagt hattest. Was bei On Idle darauf schließen lässt, dass done vergessen wurde. Wenn es lediglich bei dir länger zum Starten braucht, dann ist das ne Sache mit der man durchaus leben kann. Auch wenn sie ziemlich ärgerlich ist. Aber wenn die Anwendung generell nur 5 % ihres Potential entfalten kann, dann ist das nicht akzeptabel. Sehe ich jedenfals so.
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.