blob: ce977342d207a1e6631d416e1cfc95e1b508a3ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#pragma once
#include <glRef.h>
#include <glad/gl.h>
#include <string_view>
#include <thirdparty/ctre/include/ctre.hpp>
class Shader {
public:
using Source = std::basic_string_view<GLchar>;
using ShaderRef = glRef<GLuint, &glCreateShader, &glDeleteShader>;
constexpr Shader(const GLchar * text, GLuint type) :
text {text}, type {type}, lookups {ctre::search<R"(\bGL_[A-Z_]+\b)">(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;
};
|