Voglio chiedere se esiste una best practice per l'impostazione dei Effect
parametri in XNA. O in altre parole, cosa succede esattamente quando chiamo pass.Apply()
. Posso immaginare più scenari:
- Ogni volta che
Apply
viene chiamato, tutti i parametri degli effetti vengono trasferiti alla GPU e quindi non ha alcuna influenza reale sulla frequenza con cui imposto un parametro. - Ogni volta che
Apply
viene chiamato, vengono trasferiti solo i parametri che sono stati ripristinati. Pertanto, è necessario evitare la memorizzazione nella cache di operazioni Set che in realtà non impostano un nuovo valore. - Ogni volta che
Apply
viene chiamato, vengono trasferiti solo i parametri che sono stati modificati. Quindi la memorizzazione nella cache delle operazioni di set è inutile. - Tutta questa domanda non è avviata perché nessuno dei modi menzionati ha un impatto notevole sulle prestazioni del gioco.
Quindi l'ultima domanda: è utile implementare un po 'di memorizzazione nella cache delle operazioni impostate come:
private Matrix _world;
public Matrix World
{
get{ return _world; }
set
{
if (value == world) return;
_effect.Parameters["xWorld"].SetValue(value);
_world = value;
}
}
Ringraziandoti in anticipo.