#pragma once #include #include #include #include class Shader { public: using Source = std::basic_string_view; using ShaderRef = glRef; constexpr Shader(const GLchar * text, GLuint type) : text {text}, type {type}, lookups {ctre::search(this->text)} { } [[nodiscard]] ShaderRef compile() const; [[nodiscard]] static GLint getShaderParam(GLuint shader, GLenum pname); private: void checkShaderError(GLuint shader) const; const Source text; GLuint type; bool lookups; };