Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
Hallo,
ich habe ein einfaches Programm geschrieben, das eine Heightmap in jedem Durchgang rendert, 80-90 FPS. Nun habe ich das Progamm umgeschrieben, es erstellt am Anfang eine Displaylist mit der Heightmap und die Displaylist wird in jedem Durchgang angezeigt, jedoch nur bei 50-60 FPS. Hat jemand eine Idee, woran das liegen könnte? Schonmal vielen Dank.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Hallo.
Jain. Also Displaylisten müssen nicht schneller sein wenn die Grafikkarte es nicht unterstützt. Sollte aber sonst eigentlich zu mindest nicht langsamer werden. Was ich schon mal erlebt hatte waren extrem kleine DisplayListen. Da war es dann wirklich langsamer.
Allerdings solltest du uns mal etwas Code zeigen. Evtl machst du ja irgendwas in der Liste was extrem bremmst. Bzw was hast du für eine Grafikkarte?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also eigentlich sollte die Karte so etwas schon ohne Probleme abkönnen. Also da ist nichts tragisches dran.
Wenn du die Flächen so zeichnest kannst du auch glBegin(GL_TRIANGLES); und glEnd; komplett außen rum packen. Da du immer drei Vertices hast kannst du das glBegin und glEnd komplett außerhalb machen. Du benutzt auch nichts innerhalb verboten wäre.
Allerdings denke ich nicht, dass es solche einen massiven Unterschied machen sollte. Du solltest aber in jedem Fall darauf achten, dass du diese DisplayListe nur ein mal generierst und ansonsten nur glCallList aufrufst. Ansonsten würste ich so spontan nicht woran es noch liegen könnte. Allerdings finde ich 80-90 FPS für ganz ohne Displayliste auf solch einer Karte eigentlich auch schon nicht gerade sonderlich viel.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Lossy eX hat geschrieben:
Allerdings denke ich nicht, dass es solche einen massiven Unterschied machen sollte. Du solltest aber in jedem Fall darauf achten, dass du diese DisplayListe nur ein mal generierst und ansonsten nur glCallList aufrufst. Ansonsten würste ich so spontan nicht woran es noch liegen könnte. Allerdings finde ich 80-90 FPS für ganz ohne Displayliste auf solch einer Karte eigentlich auch schon nicht gerade sonderlich viel.
Nu, die 80-90 können ja immernoch von einem VSync mit nem 90Hz-Bildschirm kommen.
Aber wie Lossy schon sagt, die Liste sollte wirklich nur einmal generiert werden, also nur einmal glNewList usw. und dann immer nur mit glCallList wieder aufgerufen werden, sonst ist der ganze schöne Vorteil dahin.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
Hallo nochmal,
V-Sync ist bei dem normalen Rendern deaktiviert, andere Programme zeigen bis zu 3500 FPS, aber die Variante mit der Displaylist hat exakt die Geschwindigkeit, die das normale Rendern bei aktiviertem V-Sync hat (wechselt zwischen 60 und 59 FPS). Sind Displaylists vllt. auf V-Sync eingestellt?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ne Ne. Also entweder ist deine kompletter Renderkontext auf V-Sync eingestellt oder nicht. Dazwischen gibts nichts. Zum Ausprobieren solltest du evtl einfach nur mal ein simples quad zeichnen. Wenn es trotzdem nur 60 sind dann ist V-Sync an.
Und dann solltest du mal deine Treibereinstellungen untersuchen. Teilweise gibt es diese Einstellung sowohl für OpenGL als auch für DirectX. Oder aber du benutzt wglSwapInterval.
Ansonsten solltest du uns mal zeigen was du da eigentlich machst.
Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
Hallo,
tut mir leid dass ich erst so spät antworte. Ich hab ein Tool um V-Sync für OpenGl und DirectX separat zu aktivieren und auch zu deaktivieren (RivaTuner), ich habe testweise V-Sync deaktiviert (Maximum war etwas über 4000 FPS bei einem Dreieck) und das ganze nochmal getstet (obwohl V-Sync beim ersten Mal auch deaktiviert war), die Raten sind aber auch etwas anders als beim ersten Mal, ohne dass ich etwas geändert habe (100 FPS ohne, 65 FPS mit Displaylist). Hier der Quellcode der Render-Routine:
Mitglieder in diesem Forum: 0 Mitglieder und 7 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.