-
-
Notifications
You must be signed in to change notification settings - Fork 990
/
shader.hpp
49 lines (37 loc) · 1.14 KB
/
shader.hpp
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
Copyright (C) 2018 by Jyrki Vesterinen <sandgtx@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#pragma once
#include <GL/glew.h>
#include <string>
namespace gl
{
class shader
{
public:
/** Constructor.
@param vertex_shader_src Vertex shader source code.
@param pixel_shader_src Pixel shader source code.
@throw std::invalid_argument if compiling the shader fails.
*/
shader(const std::string& vertex_shader_src, const std::string& pixel_shader_src)
{
compile(pixel_shader_src, vertex_shader_src);
}
/// Destructor.
~shader();
/// Makes the shader the active shader.
/// The right VBO and VAO must be already bound.
void activate() const;
private:
void compile(const std::string& vertex_shader_src, const std::string& pixel_shader_src);
GLuint shader_program_ = 0u;
};
}