/
Program.h
70 lines (49 loc) · 1.81 KB
/
Program.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
/*
tdogl::Program
Copyright 2012 Thomas Dalling - http://tomdalling.com/
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#pragma once
#include "Shader.h"
#include <vector>
namespace tdogl {
/**
Represents an OpenGL program made by linking shaders.
*/
class Program {
public:
/**
Creates a program by linking a list of tdogl::Shader objects
@param shaders The shaders to link together to make the program
@throws std::exception if an error occurs.
@see tdogl::Shader
*/
Program(const std::vector<Shader>& shaders);
~Program();
/**
@result The program's object ID, as returned from glCreateProgram
*/
GLuint object() const;
/**
@result The attribute index for the given name, as returned from glGetAttribLocation.
*/
GLint attrib(const GLchar* attribName) const;
/**
@result The uniform index for the given name, as returned from glGetUniformLocation.
*/
GLint uniform(const GLchar* uniformName) const;
private:
GLuint _object;
//copying disabled
Program(const Program&);
const Program& operator=(const Program&);
};
}