Chcę zapytać, czy istnieje najlepsza praktyka ustawiania Effect
parametrów w XNA. Innymi słowy, co dokładnie dzieje się, kiedy dzwonię pass.Apply()
. Mogę sobie wyobrazić wiele scenariuszy:
- Za każdym razem, gdy
Apply
wywoływane, wszystkie parametry efektu są przenoszone do GPU i dlatego nie ma rzeczywistego wpływu na to, jak często ustawiam parametr. - Przy każdym
Apply
wywołaniu przesyłane są tylko parametry, które zostały zresetowane. Dlatego należy unikać buforowania operacji Set, które tak naprawdę nie ustawiają nowej wartości. - Przy każdym
Apply
wywołaniu przesyłane są tylko zmienione parametry. Tak więc buforowanie Zestawów operacji jest bezużyteczne. - Całe to pytanie nie wymaga rozruchu, ponieważ żaden ze wspomnianych sposobów nie ma istotnego wpływu na wydajność gry.
Ostatnie pytanie: czy warto wdrożyć buforowanie operacji set, takie jak:
private Matrix _world;
public Matrix World
{
get{ return _world; }
set
{
if (value == world) return;
_effect.Parameters["xWorld"].SetValue(value);
_world = value;
}
}
Z góry dziękuję.