假设,对于这个例子,我有World类。World拥有Models的集合:
class World
{
public:
map<string, Model*> Models;
};模型将是应用程序中所有实体的抽象类,例如汽车、球、山或立方体。
问题是--管理这些模型的效果的最佳实践是什么。假设我有4个效果文件: base2.fx 1.fx、base2.fx 2.fx、base2.fx 3.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();等等。
也许我的观点是错误的,应该用别的方式来表达吗?
发布于 2013-02-20 15:11:47
我认为你应该同时使用这两种方法。这就是:
model->Bind(effect);
必须按固定顺序呈现的模型(例如透明对象)应以不同的方式处理,除非它们都具有相同的效果。
https://stackoverflow.com/questions/14925688
复制相似问题