]> git.localhorst.tv Git - blobs.git/blob - src/graphics/AlphaSprite.hpp
randomize creature properties a bit
[blobs.git] / src / graphics / AlphaSprite.hpp
1 #ifndef BLOBS_GRAPHICS_ALPHASPRITE_HPP_
2 #define BLOBS_GRAPHICS_ALPHASPRITE_HPP_
3
4 #include "Program.hpp"
5 #include "SimpleVAO.hpp"
6
7 #include <cstdint>
8
9
10 namespace blobs {
11 namespace graphics {
12
13 class Texture;
14
15 class AlphaSprite {
16
17 public:
18         AlphaSprite();
19         ~AlphaSprite();
20
21         AlphaSprite(const AlphaSprite &) = delete;
22         AlphaSprite &operator =(const AlphaSprite &) = delete;
23
24         AlphaSprite(AlphaSprite &&) = delete;
25         AlphaSprite &operator =(AlphaSprite &&) = delete;
26
27 public:
28         void Activate() noexcept;
29
30         void SetM(const glm::mat4 &m) noexcept;
31         void SetVP(const glm::mat4 &v, const glm::mat4 &p) noexcept;
32         void SetMVP(const glm::mat4 &m, const glm::mat4 &v, const glm::mat4 &p) noexcept;
33         void SetTexture(Texture &) noexcept;
34         void SetFgColor(const glm::vec4 &) noexcept;
35         void SetBgColor(const glm::vec4 &) noexcept;
36
37         const glm::mat4 &M() const noexcept { return m; }
38         const glm::mat4 &V() const noexcept { return v; }
39         const glm::mat4 &P() const noexcept { return p; }
40         const glm::mat4 &MV() const noexcept { return mv; }
41         const glm::mat4 &MVP() const noexcept { return mvp; }
42
43         void DrawRect() const noexcept;
44
45 private:
46         struct Attributes {
47                 glm::vec3 position;
48                 glm::vec2 texture;
49         };
50         SimpleVAO<Attributes, std::uint8_t> vao;
51         Program prog;
52
53         glm::mat4 m;
54         glm::mat4 v;
55         glm::mat4 p;
56         glm::mat4 mv;
57         glm::mat4 mvp;
58
59         GLuint m_handle;
60         GLuint mv_handle;
61         GLuint mvp_handle;
62
63         GLuint sampler_handle;
64         GLuint fg_color_handle;
65         GLuint bg_color_handle;
66
67 };
68
69 }
70 }
71
72 #endif