summaryrefslogtreecommitdiff
path: root/src/render/OpenGL.hpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-05 14:42:57 +0200
committerGitHub <noreply@github.com>2022-04-05 14:42:57 +0200
commit2313de589ecfb6664fea79c1e2f7aa991cf477cb (patch)
treee7bd36a4f99ea53efdbddca301a66939dde9cd98 /src/render/OpenGL.hpp
parent281b4f83a0f3a7be15136803c81a488d7a768a95 (diff)
parentbd5c056a601842c41816448b82cf5367e21ea0ad (diff)
Merge pull request #14 from vaxerski/custom-renderer-wlr
Added a custom wlr renderer
Diffstat (limited to 'src/render/OpenGL.hpp')
-rw-r--r--src/render/OpenGL.hpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/render/OpenGL.hpp b/src/render/OpenGL.hpp
new file mode 100644
index 00000000..c3e1b987
--- /dev/null
+++ b/src/render/OpenGL.hpp
@@ -0,0 +1,65 @@
+#pragma once
+
+#include "../defines.hpp"
+#include "../helpers/Monitor.hpp"
+#include "../helpers/Color.hpp"
+#include <wlr/render/egl.h>
+#include <list>
+
+#include "Shaders.hpp"
+#include "Shader.hpp"
+#include "Texture.hpp"
+
+inline const float matrixFlip180[] = {
+ 1.0f, 0.0f, 0.0f,
+ 0.0f, -1.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f,
+};
+inline const float fullVerts[] = {
+ 1, 0, // top right
+ 0, 0, // top left
+ 1, 1, // bottom right
+ 0, 1, // bottom left
+};
+
+struct SCurrentRenderData {
+ SMonitor* pMonitor = nullptr;
+ float projection[9];
+};
+
+class CHyprOpenGLImpl {
+public:
+
+ CHyprOpenGLImpl();
+
+ void begin(SMonitor*);
+ void end();
+
+ void renderRect(wlr_box*, const CColor&);
+ void renderTexture(wlr_texture*, float matrix[9], float a);
+ void renderTexture(const CTexture&, float matrix[9], float a);
+
+ void clear(const CColor&);
+ void scissor(const wlr_box*);
+
+ SCurrentRenderData m_RenderData;
+
+private:
+ std::list<GLuint> m_lBuffers;
+ std::list<GLuint> m_lTextures;
+
+ int m_iDRMFD;
+ std::string m_szExtensions;
+
+ // Shaders
+ SQuad m_shQUAD;
+ CShader m_shRGBA;
+ CShader m_shRGBX;
+ CShader m_shEXT;
+ //
+
+ GLuint createProgram(const std::string&, const std::string&);
+ GLuint compileShader(const GLuint&, std::string);
+};
+
+inline std::unique_ptr<CHyprOpenGLImpl> g_pHyprOpenGL; \ No newline at end of file