CMaterial.h 1.4 KB

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