Uso XNA per i miei progetti e su quei forum a volte vedo riferimenti al fatto che lo scambio di un effetto per una mesh ha un costo relativamente elevato, il che mi sorprende poiché pensavo di scambiare un effetto era semplicemente un caso di copia del programma shader sostitutivo alla GPU insieme ai parametri appropriati.
Mi chiedevo se qualcuno potesse spiegare esattamente ciò che è costoso in questo processo? E, se possibile, mettere "relativamente" nel contesto?
Ad esempio, dire che volevo usare uno shader corto per aiutare nella raccolta, vorrei:
- Cambia l'effetto su ogni oggetto, calcolando un colore unico per identificarlo e fornendolo allo shader.
- Disegna tutti gli oggetti su una destinazione di rendering in memoria.
- Ottieni il colore dal bersaglio e usalo per cercare l'oggetto selezionato.
Quale parte del tempo totale impiegato per completare tale processo sarebbe trascorso scambiando gli shader? Il mio istinto direbbe che rendere di nuovo la scena, non importa quanto semplice sia lo shader, sarebbe un ordine di grandezza più lento di qualsiasi altra parte del processo, quindi perché tutte le preoccupazioni sugli effetti?