CEffect.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <irrlicht/irrlicht.h>
  3. #include "WallpaperEngine/Irrlicht/CContext.h"
  4. #include "WallpaperEngine/Render/Objects/CImage.h"
  5. #include "WallpaperEngine/Render/Objects/Effects/CFBO.h"
  6. #include "WallpaperEngine/Render/Objects/Effects/CPass.h"
  7. #include "WallpaperEngine/Render/Objects/Effects/CMaterial.h"
  8. namespace WallpaperEngine::Render::Objects::Effects
  9. {
  10. class CMaterial;
  11. }
  12. namespace WallpaperEngine::Render::Objects
  13. {
  14. class CImage;
  15. class CEffect
  16. {
  17. public:
  18. CEffect (CImage* image, Core::Objects::CEffect* effect, Irrlicht::CContext* context, irr::video::ITexture* input);
  19. irr::video::ITexture *const getOutputTexture () const;
  20. irr::video::ITexture* getInputTexture () const;
  21. const CImage* getImage () const;
  22. const std::vector<Effects::CMaterial*>& getMaterials () const;
  23. Effects::CFBO* findFBO (const std::string& name);
  24. void render ();
  25. private:
  26. void generatePasses ();
  27. void generateFBOs ();
  28. void generateOutputMaterial ();
  29. Irrlicht::CContext* m_context;
  30. CImage* m_image;
  31. Core::Objects::CEffect* m_effect;
  32. std::vector<Effects::CFBO*> m_fbos;
  33. std::vector<Effects::CMaterial*> m_materials;
  34. irr::video::ITexture* m_inputTexture;
  35. irr::video::ITexture* m_outputTexture;
  36. irr::video::SMaterial m_outputMaterial;
  37. };
  38. };