CImage.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include "WallpaperEngine/Core/Objects/CImage.h"
  3. #include "WallpaperEngine/Render/Objects/CEffect.h"
  4. #include "WallpaperEngine/Render/CObject.h"
  5. #include "WallpaperEngine/Render/CScene.h"
  6. #include "WallpaperEngine/Render/Shaders/Compiler.h"
  7. using namespace WallpaperEngine;
  8. namespace WallpaperEngine::Render::Objects
  9. {
  10. class CEffect;
  11. class CImage : public CObject, public irr::video::IShaderConstantSetCallBack
  12. {
  13. public:
  14. CImage (CScene* scene, Core::Objects::CImage* image);
  15. void OnSetConstants (irr::video::IMaterialRendererServices* services, int32_t userData) override;
  16. void render () override;
  17. const irr::core::aabbox3d<irr::f32>& getBoundingBox() const override;
  18. const Core::Objects::CImage* getImage () const;
  19. const std::vector<CEffect*>& getEffects () const;
  20. protected:
  21. static const std::string Type;
  22. private:
  23. void generateFBOs ();
  24. void generateMaterial ();
  25. void generatePass (Core::Objects::Images::Materials::CPass* pass);
  26. irr::video::S3DVertex m_vertex [4];
  27. irr::u32 m_passes;
  28. std::vector<irr::video::SMaterial> m_materials;
  29. std::vector<irr::video::ITexture*> m_renderTextures;
  30. Core::Objects::CImage* m_image;
  31. irr::core::aabbox3d<irr::f32> m_boundingBox;
  32. std::vector<CEffect*> m_effects;
  33. std::vector<Render::Shaders::Compiler*> m_vertexShaders;
  34. std::vector<Render::Shaders::Compiler*> m_pixelShaders;
  35. };
  36. }