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

Aktuelle Zeit: Do Mai 16, 2024 22:07

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Modelviews kombinieren
BeitragVerfasst: Di Nov 06, 2012 13:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Hallo,
ich habe mal wieder eine Frage. Ich habe meine GL-Klassen ein bisschen aufgeräumt und stehe nun vor einem Problem :wink: . Beim Umbau habe ich eine Klasse TDrawable erstellt, welche ein renderbares Objekt enthält. Hierzu zählen normale Objekte (VBOs/EABs...) aber auch Objekt Gruppen, welche wiederum verschiedene TDrawables beinhalten können. Mein Problem ist jetzt, das Objekte und Gruppen natürlich verschoben werden können. Das bedeutet aber, dass ich mehrere Matrizen verschachtele (zB. eine verschiebbare ModelGroup mit verschiebbaren Objekten). Meine Frage ist jetzt, wie man so etwas am besten löst. Meine bisherige Überlegung war, die Verschiebungen/Rotation/Skalierung zu speichern und bei jedem Draw-Call der Child-Objekte diese Anzuwenden, das könnte allerdings bei mehreren Objekten sehr lange dauern. Ich denke es gibt einen Weg, einfach mehrere Modelviews zu speichern und diese (erst im Shader?) zu kombinieren. Leider habe ich noch keinen Ansatz gesehen mit dem das möglich wäre.
Ich würde mich freuen, wenn ihr das erklären könnten oder einen anderen Weg kennt Modelviews zu kombinieren.

Gruß
Mori

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modelviews kombinieren
BeitragVerfasst: Di Nov 06, 2012 13:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Also du baust dir damit einen Szenengraph auf, bei dem die Knoten jeweils eine Matrix haben, die sich auf die Kinder bezieht?
Die endgültige Matrix eines Blattes erhältst du ja am Ende durch Multiplikation aller Matrizen auf dem Weg zum Blatt. Das kannst du bei jedem Zeichenvorgang vorher kurz machen. Wird das aber wegen der Baumgröße zu langsam, dann kannst du das einmalig machen und die resultierende Matrix in nem Blatt speichern. Ändert sich etwas in dem Baum, was den Pfad zum Blatt betrifft, musst du die natürlich neuberechnen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modelviews kombinieren
BeitragVerfasst: Mi Nov 07, 2012 07:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Vielen Dank Philip, mir war nicht klar, dass man die Modelviews einfach multiplizieren kann um den Effekt zu erzielen. Allerdings frage ich mich, wie man das am besten umsetzt. Wenn ich zB. ein sich bewegendes Objekt habe worauf mehrere statische Objekte sind, müsste ich bei jeder Bewegung des dynamischen Objekts alle Nodes neu berechnen. Meine Überlegung wäre ein Uniform Array zu nehmen, und bei vielen Subnodes diese Multiplikationen erst im Shader auszuführen. Ist das die beste Lösung für das Problem, oder ist es evtl. immer schneller die CPU zum berechnen zu benutzen?

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modelviews kombinieren
BeitragVerfasst: Mi Nov 07, 2012 14:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 31, 2007 18:32
Beiträge: 150
Programmiersprache: Pascal
Im Shader müsstest du Lösungen wie Compute Shader nehemen, denn fall du die Multiplikation in den VertexShader verlagerst wird diese logischerweise per Vertex ausgeführt und nicht nur einmalig wie es auf der CPU der fall wäre.
Wenn du also nicht gerade indirect draw calls und Compute Shader benutzt würde ich empfehlen die Multiplicationen auf der CPU durchzuführen und die uniforms zu updaten.

mfg FrenK


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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.007s | 14 Queries | GZIP : On ]