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

Aktuelle Zeit: Fr Jul 18, 2025 05:05

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL verlangsamt die Zeit
BeitragVerfasst: Di Dez 30, 2003 17:41 
Offline
DGL Member

Registriert: So Dez 28, 2003 17:18
Beiträge: 5
Ich hab ein kleines Programm geschrieben, welches ein paar normale OpenGl Befehle zur Darstellung mehrerer Quads ausführt. Nebenbei hat das Programm einen "QueryPerformanceCounter" zur Zeitmessung.
Auf meinem P4 2.6Ghz WinXP läuft alles bestens, die gemessene Zeit läuft identisch mit der Systemzeit(Windows Uhr) bzw. meiner Armbanduhr.

Allerdings auf meinem alten P2 400Mhz Win98 läuft die im Programm gemessene Zeit zwar identisch mit der Systemzeit, aber nicht mehr synchron mit meiner Armbanduhr. Umso mehr Quads dargestellt werden umso größer ist die Zeitdifferenz. Bei 30000 Quads ist das Verhältnis 8 : 10; Also 8 Sekunden im Programm sind 10 Sekunden in Originalzeit.

Es muss an OpenGL liegen, denn wenn man die Quadsdarstellung wegläßt und stattdessen ein sleep einbaut, läuft die Zeit synchron.
Ich will hoffen das dies an meinem alten Rechner liegt, aber was wenn auch auf meinem neuen Rechnner dieser Fehler auftritt er aber erst nach mehrenen Stundenlaufzeit sichtbar wird, weil die Differenz im Microsekundenbereich liegt.

Mach ich irgendwas falsch oder ist dies wirklich möglich, das OpenGL die Systemzeit verlangsamt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 30, 2003 18:17 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Ziemlich obskur. Ich glaube Intel Prozessoren haben seit dem Pentium Pro einen High Performance Counter, der den tatsächlichen Prozessortakt zählt, eingebaut - daran sollte es also nicht liegen, es sei denn der Prozessor hat einen Bug (ist ja nicht so, dass keine dokumentiert wären, auch wenn diese meist eher esoterischer Natur (SMP) sind).

Wahrscheinlicher ist allerdings ein anderer Fehler: öffne mal einen generischen OpenGL Renderkontext (Microsofts Softwareimplementation, PFD_GENERIC Bit im Pixelformat setzen) oder benutze die MesaGL Treiber - wenn der Fehler dann nicht mehr auftritt, setzt wahrscheinlich tatsächlich der Treiber deiner Grafikkarte den Counter irgendwo zurück - wenn aber doch, liegt der Fehler mit ziemlicher Sicherheit in deiner Applikation.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 30, 2003 19:19 
Offline
DGL Member

Registriert: So Dez 28, 2003 17:18
Beiträge: 5
So nach einiges Test mit anderen OpenGl programmen z.b zwei Demos von "http://www.delphigl.de/de_opengl.html" bin der Ansicht, das sich um meine Application handelt, die diesen Fehler verursacht. Denn alle anderen Programme haben keine Auswirkungen auf die Zeit. Somit muss ich in meiner kleinen "Zeitmaschine" irgendwas falsch machen. Allerdings kenne ich keinen Delphi bzw. OpenGl Befehl der Auswirkung auf die Systemzeit hat. Dann werd ich wohl mal Step by Step meine Anwendung durchgehen müssen um den Fehler zu finden. Sollte ich diesen Fehler jemals finden werden meld ich mich hier.

Kann es sein das bei der Lösung eines Problems, 10 neue dazu kommen?

Bis denne...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 03, 2004 12:49 
Offline
DGL Member

Registriert: So Dez 28, 2003 17:18
Beiträge: 5
So nach langen testen. Bin ich zu dem Schluss gekommen, dass die Anzahl der zuzeichenen Quads zu dem Fehler führt.
Folgende Procedure egal in welchen Programm ausgeführt (z.b. auch in den Demos von DelphiGL) führt dazu das die Systemuhr langsamer wird.

Code:
  1.  
  2. Procedure DrawIt;
  3. Var x,y   :integer;
  4. begin
  5.  randseed := 1;
  6.  glBegin(GL_QUADS);
  7.   for x := 0 to 249 do for y := 0 to 249 do begin
  8.    glColor3f(random,random,random);
  9.    glvertex3f(x * 50  ,1 ,y * 50);
  10.    glvertex3f(x * 50+50,1 ,y * 50);
  11.    glvertex3f(x * 50+50,1 ,y * 50+50);
  12.    glvertex3f(x * 50 ,1 ,y * 50+50);
  13.   end;
  14.  glend;
  15. end;
  16.  


Die Procedure zeichnet 250x250 Quads, bei solch hohen Werten wird die Uhr langsamer. Tja muss wohl dann ein Fehler der Grafikkarte sein, weil doch normalerweise die Systemuhr unabhängig von der Geschwindigkeit eines Programmes laufen sollte.
Aber egal ist mein alter Rechner.

Bis denn.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 03, 2004 13:31 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Hallo,

ich habe deinen Code im DGL VCL Template bei mir ausprobiert und keinerlei Unterschiede zwischen Real- und Systemzeit festgestellt.

Allerdings läuft das Teil nur mit 36-40FPS bei mir, obwohl nur ca. 62500 Quads gezeichnet werden. Ist das auf einer GF4MX, WinXP und einer Intel 2.4GHz normal?

Gruß
KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 03, 2004 21:34 
Offline
DGL Member

Registriert: So Dez 28, 2003 17:18
Beiträge: 5
Also auf meinem P4 2.6 GHz Radeon 9000 läuft das mit 30-40 fps, aber darum ging es mir aber auch nicht.
Das ausführen dieser Procedure verlangsamt die Systemzeit auf meinem alten Rechner P2 400Mhz Geforce2TI. Es läuft dort mit 1-2 fps und verlangsamt die Systemzeit. Sowas sollte normalerweise nicht passieren, denn egal wie langsam ein Programm läuft sollte dennoch die Systemuhr konstant weiterlaufen. Da die Anzahl der Quads ohnehin das Programm auf meinem alten Rechner unbenutzbar macht, weil es eben so langsam läuft, ist das Problem für mich erledigt. Ich habe keine Lust mehr von einem Problem ins nächste zu stolpern und mich damit tagelang zu beschäftigen. Ich mache nun weiter und wenn das Programm auf meinem neuen Rechner läuft ist das ok. Diese ganze Kompatiblitätsgeschichte geht mir auf die Nerven. Denn dieses Problem hatte ich schon mal, auf 3 Rechnern lief mein Progamm super toll und auf einem Rechner nicht und nu finde mal den Fehler. Mein Freund war schon richtig genervt, das ich ihm jeden Tag eine neue Version zugeschickt habe zum testen.
So genug aufgeregt..

Bis denne


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 23 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.014s | 15 Queries | GZIP : On ]