Я хочу запитати, чи є найкраща практика встановлення Effect
параметрів у XNA. Або іншими словами, що саме відбувається, коли я телефоную pass.Apply()
. Я можу уявити кілька сценаріїв:
- Кожен раз, коли
Apply
викликається, всі параметри ефекту передаються в GPU, і це не має реального впливу на те, як часто я встановлюю параметр. - Кожен раз, коли
Apply
викликається, передаються лише параметри, які були скинуті. Тому слід уникати кешування операцій Set, які фактично не встановлюють нове значення. - Кожен раз, коли
Apply
викликається, передаються лише зміни, які були змінені. Тож кешування операцій Set не є марним. - Це ціле запитання беззаперечне, тому що жоден із згаданих способів не має помітного впливу на продуктивність гри.
Отже, остаточне запитання: чи корисно реалізувати кешування керованої операції типу:
private Matrix _world;
public Matrix World
{
get{ return _world; }
set
{
if (value == world) return;
_effect.Parameters["xWorld"].SetValue(value);
_world = value;
}
}
Дякую вам в очікуванні.