Скажем, для этого примера, что у меня есть Мир класс. Мир имеет коллекцию моделей:Управление эффектами HLSL
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();
и т.д ...
Может быть, вся моя точка зрения не так, и это должно быть сделано по-другому?
Это то, что я ожидал. Спасибо за подтверждение и ответ –