A
Hallo, so ich hab mich jetzt mal intensiv mit dem scene-management von engines beschäftigt. Bis jetzt ist das alles einigermaßen verständlich. Nun hab ich mir die frage gestellt, wie das dann mit shadern in opengl aussieht. Ich hab mir da mal so meine gedanken gemacht und bin auf folgendes gekommen (siehe unten).
1.Meine frage ist nun, kann man das so stehen lassen rein wegen der sortierung der shader und texturen?
2. Gibts verbesserungsmöglichkeiten?
3. Ist wahrscheinlich zwar ein wenig offtopic, aber ich hoffe ihr verzeit mir :).
Wie ihr seht, bin ich mir noch nicht im klaren darüber ob ich nun einen Bsp oder Octree verwende für die kollisionserkennung, da ich diese ganze szenenverwaltung gerne für indoor konzipieren würde. Daher die frage, ob es irgentwo eine gute möglichkeit gibt, sich über portale zu informieren und ob es möglich ist portale mit Octrees zu verbinden. Bisher sah ich die immer nur in verbindung mit Bsp-Bäumen.
Achtung Pseudocode
init:
neuen Kameraknoten erstellen
--> position setzen
--> frustum berechnen
--> ...
einsortieren
neuen Oktree/Bsp-Knoten erstellen (Welt,Level,...)
einsortieren
neuen Mesh-Knoten erstellen (Gegener,Entity,...)
einsortieren
neuen shader erstellen
--> shader an Mesh linken
loop:
Kamera update (position/frustum)
Gegner update (position)
wenn Gegner sichtbar
in Vertexbuffer speichern
wenn shader benutzt wird
für jeden pass
states aktivieren
vertexshader id holen
pixelshader id holen
vertexshader aktivieren
pixelshader aktivieren
textur id's der vertexshadertexturen holen
für jede textur des vertexshaders
textur aktivieren
textur id's der pixelshadertexturen holen
für jede textur des pixelshaders
textur aktivieren
vertices im vertexbuffer "aktivieren"
vertexbuffer zeichen
... alles wieder releasen
ende
andernfalls
...