Moinsen zusammen,
ich habe mal eine theoretische Frage bezüglich der Vorgehensweise von OpenGL beim Rendern. Ganz spezifisch für eine ScissorBox. Ich überlege nämlich, ob ich eine solche in mein Projekt einbinden soll, und ob ich dadurch ein Performance Plus bekomme. Allerdings will mir nicht in den Kopf, wie so eine Scissor Box funktioniert.
Ich weiß, dass ich einen Bereich meines Fensters auswähle, um nur dort ein Update der Region zu erzielen. Aber muss dafür nicht sowieso die ganze "Welt" gerendert werden, um zu sehen, was überhaupt in der Region meiner Box liegt? Und würde das nicht genauso lange dauern wie ein jedes anderes Rendern? Ok ich sehe ein, dass beim Kopieren vom Back in den Front Buffer ein bisschen Zeit gespart werden kann, aber ist das die Mühe einer Scissor Box wert?
Ich hoffe ihr könnt mein hirninternes Problem nachvollziehen, und verzeit die noobische Ausdrucksweise. Im Grunde habe ich gar keine Vorstellung, was beim Rendern, wenn es überhaupt so heißt, geschieht.
Ich hoffe mich kann hier jemand Aufklären! Ich bin für jeden Tipp/Link/Hilfe dankbar.
Cherio Woltan
Avoid rendering to only a section of the frame using methods such as glViewport() or glScissor(). This disables load balancing with the SFR mode and hurts performance with the AFR method.
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Pellaeon hat geschrieben:
Aus dem GPU Programming Guide von nvidia:
Zitat:
Avoid rendering to only a section of the frame using methods such as glViewport() or glScissor(). This disables load balancing with the SFR mode and hurts performance with the AFR method.
Den Kommentar darf man nicht so einfach im Raum stehen lassen (da er auch leicht aus dem Zusammenhang gerissen ist), besonders da ein Anfänger wohl kaum weis was damit gemeint ist. Dieser Auszug aus NVidias GPU-Guide bezieht sich nur auf SLI, also wenn zwei Karten im Verbund rendern, nicht auf ein Rendern auf nur einer Karte. Der Hinweis stammt da übrigens aus den Performance-Tipps für SLI-Anwendungen, und kann eigentlich ignoriert werden solange man nicht eine sehr anspruchsvolle 3D-Engine entwickelt die jeden Frame an Performance braucht.
Ansonsten kann man durch die Verwendung von Scissor je nach Szenario Füllrate sparen, wenn man also durch diese eingeschränkt ist kann es u.U. etwas bringen mit Hilfe des Scissors nur einen bestimmten Bereich zu aktualisieren. Allerdings haben moderne Karten (zumindest im oberen Segment) extremst viel Füllrate, und man ist eher selten füllratenbeschränkt. Und das mit "ganze Welt rendern" stimmt so nur bedingt, da die Grafikkarte ja Boundingchecks usw. macht und dann selbst weis ob etwas innerhalb dieser Box liegt oder nicht.
Aber an sich ist der Scissortest nicht zur Performancesteigerung gedacht, sondern um das Rendern rein praktisch auf einen bestimmten Bildbereich zu beschränken. Besonders wenn man eine Nutzerschnittstelle in OpenGL realisiert wird man um diesen Test nicht herumkommen, denn irgendwie muss man ja bei Listboxen usw. den Bereich in dem z.b. Text ausgegeben wird einschränken, was dann über diesen Test geschieht. Natürlich kann man das Rendern im bestimmte Bereiche auch mit dem Stenciltest erledigen, aber wenn es rein um rechteckige Bereich geht ist der Scissortest schneller implementiert.
Hey Sascha,
danke für diese ausfürliche Antwort. Ich glaube, dann werde ich mich mal mit diesem Scissors auseinander setzen. Ich habe nämlich eine "Welt", in der relativ viel statisch ist, sprich, nicht andauernd gerendert werden muss. Lediglich einige kleine Bereiche erfordern eine hohe Updaterate. Es kommt noch hinzu, dass meine "Welt" an sich relativ statisch ist, sprich es passiert relativ selten, dass sich bereiche auf der Welt auf anderen Koordinaten im Fensterkoordinatensystem befinden. (ich hoffe das versteht jemand). D.h. scissor wird von mir ausprobiert, d.h. des weiteren, dass in naher zukunft mit fragen zu rechnen sein wird ^^
Thx again für alle Antworten
cherio Woltan
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.