假设,对于这个例子,我有世界级。世界有模型集合:
class World
{
public:
map<string, Model*> Models;
};
模型将是应用程序中所有实体的抽象类,例如汽车、球、山或立方体。
问题是 - 管理该模型的效果的最佳实践是什么。假设我有 4 个效果文件:base1.fx、base2.fx、base3.fx、bas4.fx。它们每个都有类接口,可能绑定到模型(IBaseEffect1、IBaseEffect2、IBaseEffect3、IBaseEffect4)。
现在,我是否应该独立考虑每个模型,并执行以下操作:
Cube1.Bind(IBaseEffect2);
Car.Bind(IBaseEffect3);
模型有能力管理效果的地方,所以我会:
World::Render()
{
foreach model -> Render();
}
这是我的引擎的实际解决方案。
或者更好的是独立管理效果,并执行以下操作:
IBaseEffect1.SetAsActual();
foreach Model which should be considered for effect1 -> Render();
IBaseEffect2.SetAsActual();
foreach Model which should be considered for effect2 -> Render();
ETC...
也许我的整个观点都是错误的,应该换个方式吗?