Closed JirkaDellOro closed 5 years ago
Erste Fragen
vertexArrayObjects
und buffers
zwei getrennt Arrays, werden aber scheinbar über den gleichen Schlüssel, den Knotennamen, angesprochen. Ist es eine strenge 1:1-Beziehung, so dass man sie gemeinsam in einem Array als Kombination referenzieren sollte, oder gibt es unterschiedliche KombinationeninitializeViewportNodes
wird derzeit Knoten, denen die Transformkomponente fehlt, automatisch eine aufgedrückt. Innerhalb dieser Methode spielt das aber gar keine Rolle sondern erst später beim Rendern, korrekt?drawObjects
durchgeschleift... warum? Die Methode hat doch jederzeit Zugriff auf die Kamera des Viewports...?Frage 1 hatten wir beantwortet, die 1:1-Beziehung ist nicht zwingend, andere Strukturen sind sinnvoller, sind geplant und werden bereits implementiert.
Bitte beantworte noch die Fragen 2 und 3.
Außerdem wolltest Du selbst noch Fragen posten. Wie geht es bei dir voran, Jascha?
Korrekt. Die Erstellung der Transformkomponente in diesem Schritt sollte garantieren, dass die Komponente beim Rendern für die Berechnungen vorhanden ist und nicht in jedem Frame abgeprüft werden muss.
Jetzt wo du es anmerkst sehe ich auch, dass diese nicht übergeben sondern einfach abgerufen werden kann. Ist wohl ein Überbleibsel aus der Zeit, zu der es die Viewport-Klasse noch nicht gab.
Ich wollte fragen posten, so diese aufkommen. Derzeit habe ich keine Punkte, die sich teilweise oder gänzlich meinem Verständnis deiner Aufgabenstellung an mich entziehen. Ich sitze momentan dran, da ich bisher nicht die Zeit hatte, mich aktiv mit dem Code zu beschäftigen. Werde vorraussichtlich bis heute Abend noch ein Update meiner Datei pushen.
Ich revidiere.
Ich verstehe nicht, was die Funktion createParameter tatsächlich zurückgeben soll.
Da bin ich bei der Namensgebung auch noch nicht richtig zufrieden. Hier soll das VAO zurückgegeben werden. Da es sich dabei ja nicht wirklich um ein VertexArray handelt, habe ich den allgemeinen Begriff Parameter gewählt. Das sind also die Render-Parameter, also das, was im Viewport vertexArrayObjects
war.
Soll das zurückgegebene VertexArrayObject nur erstellt oder auch gleich im Context gebunden werden? Ich frage, weil es zur Verwendung Daten vom Mesh benötigen wird, die es aus dem Material, das ihm übergeben wird, nicht bekommt.
Gleiches gilt in der Hinsicht für den Buffer, der erstellt und gebunden wird und in dem momentan ebenfalls ein VertexArrayObject erstellt und gebunden wird.
Ein weiteres funktionales Detail: Bei der Recherche ergab sich, dass es "schöner" wäre (sprich ggf. Fehler vermeiden wird), die Bindung eines Buffers vor dem löschen aufzuheben. Dazu müsste der Funktion allerdings das target Attribut des Bufferobjekts bekannt sein und ich habe noch keine Möglichkeit gefunden, dieses nur aus dem Buffer heraus zu ermitteln.
Du musst hier selbst Entscheidungen treffen, da Du tiefer in der WebGL-Seite steckst. Mein Manager ist zunächst fertig, ich muss ihn noch testen und kommentieren. Dabei sind die Strukturen, die er verwaltet, wurscht. Hier hast Du also Gestaltungsspielraum, wie wir ihn bereits beim Buffer nutzten. Es sollte alles, was nicht während des Renderns geschehen muss, bereits zuvor geschehen sein und die entsprechenden Informationen in sinnvollen Strukturen gespeichert sein. Derzeit habe ich drei Strukturen (program, parameter, buffer) vorgesehen und je drei Phasen (create, remove, use)
create und remove werden aufgerufen, sofern beim Hinzufügen oder Entfernen eines Knotens erkannt wird, dass die entsprechende Struktur noch fehlt oder gelöscht werden kann. use dagegen wird dann pro Frame aufgerufen. Die draw-Funktion mit dem Aufruf von use habe ich implementiert. Du musst prüfen, ob das so passt, was Du entsprechend implementieren musst oder was ich ändern muss, damit alles am Ende zusammen passt.
Hilft dir das?
Achtung: implementiere die Funktionen bitte weiter in deinem WebGL-Teil, damit ich den Manager mit Dummy-Funktionen testen kann. Sonst müssten wir nochmal branchen.
Im Kern durch...
@R4Pi3R ich habe einen neuen Branch angelegt, Name siehe Issue-Titel. Hier möchte ich das Refactoring machen, zusammen mit dir. Bitte beobachte und prüfe und lass' uns über diesen Thread diskutieren. Ich werden voraussichtlich Montagnachmittag und Dienstag im Spiellabor sein. Ich würde mich freuen, wenn Du kommst.