CImage.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include "WallpaperEngine/Core/Objects/CImage.h"
  3. #include "WallpaperEngine/Render/CObject.h"
  4. #include "WallpaperEngine/Render/CScene.h"
  5. #include "WallpaperEngine/Render/Shaders/Compiler.h"
  6. using namespace WallpaperEngine;
  7. namespace WallpaperEngine::Render::Objects
  8. {
  9. // TODO: MOVE IShaderConstantSetCallBack TO IT'S OWN CLASS OR ORGANIZE THIS BETTER
  10. class CImage : public CObject, public irr::video::IShaderConstantSetCallBack
  11. {
  12. public:
  13. CImage (CScene* scene, Core::Objects::CImage* image);
  14. virtual void OnSetConstants (irr::video::IMaterialRendererServices* services, int32_t userData);
  15. void render () override;
  16. const irr::core::aabbox3d<irr::f32>& getBoundingBox() const override;
  17. protected:
  18. static const std::string Type;
  19. private:
  20. void generateMaterial ();
  21. void generatePass (Core::Objects::Images::Materials::CPassess* pass);
  22. irr::video::S3DVertex m_vertex [4];
  23. irr::u32 m_passes;
  24. std::vector<irr::video::SMaterial> m_materials;
  25. std::vector<irr::video::ITexture*> m_renderTextures;
  26. Core::Objects::CImage* m_image;
  27. irr::core::aabbox3d<irr::f32> m_boundingBox;
  28. std::vector<Render::Shaders::Compiler*> m_vertexShaders;
  29. std::vector<Render::Shaders::Compiler*> m_pixelShaders;
  30. };
  31. }