#pragma once #include #include namespace scwx { namespace qt { namespace gl { class GlContext { public: explicit GlContext(); virtual ~GlContext(); GlContext(const GlContext&) = delete; GlContext& operator=(const GlContext&) = delete; GlContext(GlContext&&) noexcept; GlContext& operator=(GlContext&&) noexcept; gl::OpenGLFunctions& gl(); std::shared_ptr GetShaderProgram(const std::string& vertexPath, const std::string& fragmentPath); GLuint GetTextureAtlas(); private: class Impl; std::unique_ptr p; }; } // namespace gl } // namespace qt } // namespace scwx