この例では、私がWorldクラスを持っているとしましょう。世界にはモデルのコレクションがあります:
class World
{
public:
map<string, Model*> Models;
};
モデルは、車、ボール、山、立方体など、アプリケーション内のすべてのエンティティの抽象クラスになります。
問題は、そのモデルの効果を管理するためのベスト プラクティスは何かということです。base1.fx、base2.fx、base3.fx、bas4.fx の4 つのエフェクト ファイルがあるとします。それぞれにクラス インターフェイスがあり、モデルにバインドされる可能性があります ( 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();
等...
たぶん、私の視点全体が間違っているので、別の方法で作成する必要がありますか?