CImage.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include "WallpaperEngine/Core/Objects/CImage.h"
  3. #include "WallpaperEngine/Render/Objects/Effects/CMaterial.h"
  4. #include "WallpaperEngine/Render/Objects/CEffect.h"
  5. #include "WallpaperEngine/Render/CObject.h"
  6. #include "WallpaperEngine/Render/CScene.h"
  7. #include "WallpaperEngine/Render/Shaders/Compiler.h"
  8. #include "WallpaperEngine/Assets/CTexture.h"
  9. #include <glm/vec3.hpp>
  10. using namespace WallpaperEngine;
  11. using namespace WallpaperEngine::Assets;
  12. namespace WallpaperEngine::Render::Objects::Effects
  13. {
  14. class CMaterial;
  15. }
  16. namespace WallpaperEngine::Render::Objects
  17. {
  18. class CEffect;
  19. class CImage : public CObject
  20. {
  21. public:
  22. CImage (CScene* scene, Core::Objects::CImage* image);
  23. void render () override;
  24. const Core::Objects::CImage* getImage () const;
  25. const std::vector<CEffect*>& getEffects () const;
  26. const GLfloat* getVertex () const;
  27. const GLuint* getVertexBuffer () const;
  28. const GLuint* getPassVertexBuffer () const;
  29. const GLuint* getTexCoordBuffer () const;
  30. protected:
  31. static const std::string Type;
  32. private:
  33. void generateMaterial (irr::video::ITexture* resultTexture);
  34. CTexture* m_texture;
  35. GLfloat m_vertexList [6 * 3];
  36. GLfloat m_passesVertexList [6 * 3];
  37. GLfloat m_texCoordList [6 * 2];
  38. GLuint m_vertexBuffer;
  39. GLuint m_passesVertexBuffer;
  40. GLuint m_texCoordBuffer;
  41. uint16_t m_vertexIndices [6];
  42. Core::Objects::CImage* m_image;
  43. std::vector<CEffect*> m_effects;
  44. Effects::CMaterial* m_material;
  45. irr::video::SMaterial m_irrlichtMaterial;
  46. irr::video::SMaterial m_irrlichtMaterialInvert;
  47. };
  48. }