Z
aaaaaaaaargh schrieb:
denk an die armen Programmierer, die deine Engine benutzen wollen
- Ich bin zum Glück der einzige Programmierer, der mit meiner Engine arbeiten muss .
aaaaaaaaargh schrieb:
Viel sinnvoller ist es, wenn du dir Gedanken darüber machst, wie du die einzelnen Shader sinnvoll aggregieren kannst, um so viele glUseProgram()-Aufrufe wie möglich zu sparen. Als Idee dafür bieten sich z.B. Gruppen-Queues an, mit denen du schonmal einiges zusammenfassen kannst. Auch Screen-Space-Rendering-Methoden helfen dir hier; der Gedanke hier ist grob erklärt, dass man die einzelnen Informationen über ein Fragment in verschiedene FrameBuffer rendert und dann später in irgendeiner Form zusammenfasst. Wenn du hier die Tiefe des Fragments in einem separaten Buffer hast, kannst du später eine Menge damit anstellen, ohne groß auf die Reihenfolge der draw calls zu achten.
- Wäre das nicht leicht verschwenderisch? Die "richtige Reihenfolge" zu bestimmen, ist (mal von transparenten Flächen abgesehen) nicht sonderlich aufwendig, da nur Flächen, die den selben Shader und das gleiche Material verwenden zusammen gezeichnet werden müssen.
Ich war übrigens schon vorher davon ausgegangen, dass es irgendeinen guten Grund dafür gibt, keinen globalen Shader zu machen, da das ja von Niemandem so getan wird.
Deshalb möchte ich mich für die klare(n) Antwort(en) bedanken.
Also - Dankeschön.