我想问一下是否有Effect
在XNA中设置参数的最佳实践。换句话说,当我打电话时到底发生了什么pass.Apply()
。我可以想象多种情况:
- 每次
Apply
调用时,所有效果参数都会传送到GPU,因此我对参数的设置频率没有真正的影响。 - 每次
Apply
调用时,仅传输已重置的参数。因此,应避免缓存实际上未设置新值的Set-operations。 - 每次
Apply
调用时,仅传送更改的参数。因此,缓存Set-operations是没有用的。 - 这整个问题是没有根源的,因为没有一种提及的方式会对游戏性能产生任何显着影响。
因此,最后一个问题是:实现set操作的某些缓存是否有用,例如:
private Matrix _world;
public Matrix World
{
get{ return _world; }
set
{
if (value == world) return;
_effect.Parameters["xWorld"].SetValue(value);
_world = value;
}
}
感谢你在期待。