DGL
https://delphigl.com/forum/

Shader + Engine = ??
https://delphigl.com/forum/viewtopic.php?f=20&t=8144
Seite 1 von 1

Autor:  FrenK [ Do Jan 15, 2009 17:48 ]
Betreff des Beitrags:  Shader + Engine = ??

Also ich habe mir in letzter zeit ei n paar gedaneken gemacht wie shader in Engines impelemntiert werden könnten..
Das Problem ist nur wenn ich z.B. einen shader habe der die Textur einenes Meshes verändern soll und gleichzeitig noch die möglichkeit haben will beleuchtung per shader zu realisiern, dann müsste ich doch praktisch die pipline durch beide Shader ersetzen bzw aus beiden einen machen aber mir ist nicht ganz klar wie soetwas dynamisch von staten gehen soll...

Das einzige was mir daszu eingefallen ist, ist jeden Teil der neuen Pipline (Licht, Texturveränderungen usw.) in einer Liste zu speichern diese Template Stücke nach einer bestimmten einfolge in ein Shader Grundgerüst einzusetzen und dann jedesmal wenn die pipline angepasst werden muss den shader erst zu erzeugen...

Also habt ihr irgendwelche ideen bzw. Vorschläge wie man das regeln sollte???

Autor:  Flash [ Do Jan 15, 2009 18:22 ]
Betreff des Beitrags: 

Soweit ich das bisher verstanden habe, werden in Engines tatsächlich die Shader-Quellfiles zusammenkopiert und dann gebunden.

[url]glShaderSource[/url] bestätigt mich gerade in meiner Vermutung.

Autor:  Archaon [ Mi Jan 21, 2009 09:33 ]
Betreff des Beitrags: 

Du kannst auch bei der Initalisierung mehrere ProgrammObjekte mit den verschiedenen Shadern erstellen und dann in deiner Render-Schleife mittels glUseProgram() auswählen, welcher Shader aktiviert werden soll. Mit glUseProgram(0) kannst du alle Shader deaktivieren.

Das hat den vorteil, dass du in deiner Render-Schleife die Shader nicht compilieren und linken brauchst.

Gruss
Archaon

Autor:  Lord Horazont [ Mi Jan 21, 2009 13:14 ]
Betreff des Beitrags: 

Ja, bringt einem aber nicht viel, weil man nur einen Shader gleichzeitig aktivieren kann. Somit musst du die dinger trotzdem vorher zusammenlinken. Ansonsten hast du aber recht, das Kompilieren sollte genauso wie das Laden der Texturen nur vor dem Rendern während der Initialisierung erledigt werden.

Gruß Lord Horazont

Autor:  FrenK [ Mi Jan 21, 2009 19:30 ]
Betreff des Beitrags: 

Das is ja schon klar das das ganze so früh wie möglich erzugt wird..
@Lord Horazont danke nochmal für den Lösungsansatz...

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/