-
Notifications
You must be signed in to change notification settings - Fork 0
/
Shader.h
81 lines (69 loc) · 1.46 KB
/
Shader.h
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef __SHADER_H__
#define __SHADER_H__
#include "GL3/gl3.h"
#include <string>
#include <vector>
// Class to encapsulate all logic related to loading/compiling shader programs.
class Shader
{
GLuint _program;
public:
// Constructor
Shader();
// Destructor
virtual ~Shader();
// TODO documentation
//
// Arguments:
// const char *vs - The GLSW-compatible name of the vertex shader.
// const char *vs - The GLSW-compatible name of the geometry shader, or NULL.
// const char *vs - The GLSW-compatible name of the fragment shader.
//
// Returns:
// None
void compile(const char *vs, const char *gs, const char *fs);
// TODO documentation
//
// Arguments:
// None
//
// Returns:
// None
void link();
// TODO documentation
//
// Arguments:
// None
//
// Returns:
// None
void del();
// TODO documentation
//
// Arguments:
// None
//
// Returns:
// bool - True if the shader program is compiled and ready to be used.
bool ok() const;
// TODO documentation
//
// Arguments:
// None
//
// Returns:
// GLuint - The handle of the shader program.
GLuint prog() const;
// Cast operator to GLuint. Returns an r-value.
//
// Arguments:
// None
//
// Returns:
// GLuint - The handle of the shader program.
operator const GLuint &() const;
protected:
// TODO documentation
GLuint shaderObj(GLenum shaderType, const char *shaderText) const;
};
#endif