Files
LifeProject/LifeGraphics/render/PosteffectManager.h
T
2025-05-13 02:46:21 +03:00

56 lines
1.0 KiB
C++

#ifndef PosteffectManager_h__
#define PosteffectManager_h__
#include <vector>
#include "render/PostEffect.h"
namespace LifeGraphics
{
class PostEffectManager
{
private:
std::vector<PostEffect*> postEffects;
SceneDescriptor descriptor;
public:
PostEffectManager()
{
}
~PostEffectManager()
{
}
void Init(SceneDescriptor& desc)
{
descriptor = desc;
}
void Add(PostEffect* effect)
{
postEffects.push_back(effect);
}
ITexture2D* Execute(ITexture2D* source, ITexture2D* depth, ITexture2D* depthTex, float dt)
{
ITexture2D* tmpResult = (ITexture2D*)0;
for (UINT i = 0; i < postEffects.size(); i++)
{
PostEffectParams params;
params.timeElapsed = dt;
params.depthTarget = depth;
params.depthTex = depthTex;
if (tmpResult)
{
params.renderTarget = tmpResult;
tmpResult = postEffects[i]->Execute(params);
}
else
{
params.renderTarget = source;
tmpResult = postEffects[i]->Execute(params);
}
}
return tmpResult;
}
};
}
#endif // PosteffectManager_h__