jGL
Loading...
Searching...
No Matches
openGLInstance.h
Go to the documentation of this file.
1#ifndef OPENGLINSTANCE_H
2#define OPENGLINSTANCE_H
3
4#include <jGL/jGL.h>
11
12namespace jGL::GL
13{
14
15 class glParticles;
16
18 {
19
20 public:
21
22 OpenGLInstance(glm::ivec2 res, uint8_t msaa = 0)
23 : jGLInstance(res),
24 framebuffer(glDrawFramebuffer()),
25 textRenderer(res)
26 {
27 framebuffer.setResolution
28 (
29 res
30 );
31 framebuffer.setMSAA(msaa);
32 }
33
34 ~OpenGLInstance(){framebuffer.destroy();}
35
36 void beginFrame(){framebuffer.bind();}
37 void endFrame(){framebuffer.blit();}
38
39 void finish(){closing = true;}
40
41 void text
42 (
43 std::string characters,
44 glm::vec2 position,
45 float scale,
46 glm::vec4 colour,
47 glm::bvec2 centre = glm::bvec2(false,false)
48 );
49
50 void clear()
51 {
52 textRenderer.clear();
53 glClearColor(clearColour.r, clearColour.g, clearColour.b, clearColour.a);
54 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
55 framebuffer.setClear(clearColour);
56 }
57
58 void setMSAA(uint8_t samples)
59 {
60 GLint maxSamples;
61 glGetIntegerv(GL_MAX_SAMPLES, &maxSamples);
62
63 if (samples > maxSamples){samples = maxSamples;}
64
65 framebuffer.setMSAA(samples);
66 }
67
68 void setClear(glm::vec4 colour) { clearColour = colour; }
69 void setProjection(glm::mat4 proj) {/*TODO*/}
70 void setTextProjection(glm::mat4 proj) { textRenderer.setProjection(proj); }
71 void setViewport(glm::vec4 view) { glViewport(view.x, view.y, view.z, view.w); }
72
73 std::shared_ptr<Particles> createParticles(size_t sizeHint)
74 {
75 return std::static_pointer_cast<Particles>(std::make_shared<glParticles>(sizeHint));
76 }
77
78 std::shared_ptr<Texture> createTexture(std::filesystem::path imageFile, Texture::Type type)
79 {
80 switch (type)
81 {
83 return std::static_pointer_cast<Texture>(std::make_shared<glTexture2DRGB>(imageFile));
85 return std::static_pointer_cast<Texture>(std::make_shared<glTexture2DRGBA>(imageFile));
86 default:
87 return std::static_pointer_cast<Texture>(std::make_shared<glTexture2DRGB>(imageFile));
88 }
89 }
90
91 std::shared_ptr<Texture> createTexture(std::vector<std::byte> data, Texture::Type type)
92 {
93 switch (type)
94 {
96 return std::static_pointer_cast<Texture>(std::make_shared<glTexture2DRGB>(data));
98 return std::static_pointer_cast<Texture>(std::make_shared<glTexture2DRGBA>(data));
99 default:
100 return std::static_pointer_cast<Texture>(std::make_shared<glTexture2DRGB>(data));
101 }
102 }
103
104 std::shared_ptr<SpriteRenderer> createSpriteRenderer(size_t sizeHint)
105 {
106 return std::static_pointer_cast<SpriteRenderer>
107 (
108 std::make_shared<glSpriteRenderer>
109 (
110 sizeHint
111 )
112 );
113 }
114
115 std::shared_ptr<ShapeRenderer> createShapeRenderer(size_t sizeHint)
116 {
117 return std::static_pointer_cast<ShapeRenderer>
118 (
119 std::make_shared<glShapeRenderer>
120 (
121 sizeHint
122 )
123 );
124 }
125
126 private:
127
128 glDrawFramebuffer framebuffer;
129
130 glFont defaultFont = glFont(48);
131
132 TextRenderer textRenderer;
133
134 glm::vec4 clearColour = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f);
135 };
136}
137
138#endif /* OPENGLINSTANCE_H */
Definition openGLInstance.h:18
void clear()
Definition openGLInstance.h:50
~OpenGLInstance()
Definition openGLInstance.h:34
std::shared_ptr< SpriteRenderer > createSpriteRenderer(size_t sizeHint)
Definition openGLInstance.h:104
std::shared_ptr< ShapeRenderer > createShapeRenderer(size_t sizeHint)
Definition openGLInstance.h:115
std::shared_ptr< Texture > createTexture(std::filesystem::path imageFile, Texture::Type type)
Definition openGLInstance.h:78
void setClear(glm::vec4 colour)
Definition openGLInstance.h:68
void setTextProjection(glm::mat4 proj)
Definition openGLInstance.h:70
void finish()
Definition openGLInstance.h:39
void setMSAA(uint8_t samples)
Definition openGLInstance.h:58
std::shared_ptr< Particles > createParticles(size_t sizeHint)
Definition openGLInstance.h:73
void endFrame()
Definition openGLInstance.h:37
void setProjection(glm::mat4 proj)
Definition openGLInstance.h:69
void beginFrame()
Definition openGLInstance.h:36
void text(std::string characters, glm::vec2 position, float scale, glm::vec4 colour, glm::bvec2 centre=glm::bvec2(false, false))
Definition openGLInstance.cpp:7
OpenGLInstance(glm::ivec2 res, uint8_t msaa=0)
Definition openGLInstance.h:22
void setViewport(glm::vec4 view)
Definition openGLInstance.h:71
std::shared_ptr< Texture > createTexture(std::vector< std::byte > data, Texture::Type type)
Definition openGLInstance.h:91
Definition glTextRenderer.h:15
void setProjection(glm::mat4 p)
Definition glTextRenderer.h:38
void clear()
Definition glTextRenderer.h:48
Definition glDrawFramebuffer.h:13
void bind()
Definition glDrawFramebuffer.h:43
void setMSAA(uint8_t samples)
Definition glDrawFramebuffer.h:80
void destroy()
Definition glDrawFramebuffer.h:30
void setResolution(glm::vec2 res)
Definition glDrawFramebuffer.h:74
void blit()
Definition glDrawFramebuffer.h:53
void setClear(glm::vec4 c)
Definition glDrawFramebuffer.h:66
Definition glFont.h:13
Type
Definition texture.h:21
Definition jGL.h:21
bool closing
Definition jGL.h:65
Definition gl.h:41