diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-04-05 14:42:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-05 14:42:57 +0200 |
| commit | 2313de589ecfb6664fea79c1e2f7aa991cf477cb (patch) | |
| tree | e7bd36a4f99ea53efdbddca301a66939dde9cd98 /src/render/OpenGL.hpp | |
| parent | 281b4f83a0f3a7be15136803c81a488d7a768a95 (diff) | |
| parent | bd5c056a601842c41816448b82cf5367e21ea0ad (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.hpp | 65 |
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 |
