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

Aktuelle Zeit: Sa Jul 19, 2025 22: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: Wie funktioniert Rendern
BeitragVerfasst: So Dez 02, 2007 11:22 
Offline
DGL Member

Registriert: Mi Jan 31, 2007 09:02
Beiträge: 28
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 02, 2007 11:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
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.

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 02, 2007 13:22 
Offline
DGL Member

Registriert: Mi Jan 31, 2007 09:02
Beiträge: 28
Oha,
also ist das eher was für pros, und für den otto normal renderer nicht zu gebrauchen? oder warum wurde diese funktionalität sonst eingebaut?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 02, 2007 13:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Ist praktisch, wenn man das Fenster in verschiedene Viewports unterteilen will. Siehe http://nehe.gamedev.net/data/lessons/le ... ?lesson=42


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 02, 2007 17:23 
Offline
DGL Member
Benutzeravatar

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.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 02, 2007 18:27 
Offline
DGL Member

Registriert: Mi Jan 31, 2007 09:02
Beiträge: 28
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


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: Bing [Bot] und 9 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.013s | 20 Queries | GZIP : On ]