Ich verwende XNA für meine Projekte und in diesen Foren sehe ich manchmal Hinweise auf die Tatsache, dass das Austauschen eines Effekts gegen ein Netz mit relativ hohen Kosten verbunden ist, was mich überrascht, da ich dachte, dass das Austauschen eines Effekts lediglich das Kopieren des Ersatz-Shader-Programms war auf die GPU zusammen mit entsprechenden Parametern.
Ich habe mich gefragt, ob jemand genau erklären kann, was an diesem Prozess kostspielig ist. Und wenn möglich "relativ" in den Kontext stellen?
Angenommen, ich möchte einen kurzen Shader verwenden, um beim Kommissionieren zu helfen, dann würde ich:
- Ändern Sie den Effekt auf jedes Objekt, indem Sie eine eindeutige Farbe berechnen, um es zu identifizieren und dem Shader bereitzustellen.
- Zeichnen Sie alle Objekte auf ein Renderziel im Speicher.
- Rufen Sie die Farbe vom Ziel ab und verwenden Sie sie, um das ausgewählte Objekt nachzuschlagen.
Welchen Teil der Gesamtzeit, die benötigt wird, um diesen Prozess abzuschließen, würden Sie für den Austausch der Shader verwenden? Mein Instinkt würde sagen, dass das erneute Rendern der Szene, egal wie einfach der Shader ist, eine Größenordnung langsamer ist als jeder andere Teil des Prozesses. Warum also die Sorge um die Effekte?