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
|
#include <TG/tg_gl.h>
#include <TG/Window.hpp>
#include <TG/Matrix.hpp>
#include <TG/Shader.hpp>
int main() {
tg::Window window("Test", "Test", 800, 600, 0, 0);
tg_glInit();
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
GLuint programID = tg::LoadShaders("SimpleVertexShader.vertexshader", "SimpleFragmentShader.fragmentshader");
GLuint MatrixID = glGetUniformLocation(programID, "MVP");
mat4 P;
P.perspective(45.f, 4.f / 3.f, 0.1f, 100.f);
mat4 V;
V.lookAt(4, 3, 3, 0, 0, 0, 0, 1, 0);
mat4 M(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
mat4 MVP = P * V * M;
static const GLfloat g_vertex_buffer_data[] = {
-1.f, -1.f, 0.f,
1.f, -1.f, 0.f,
0.f, 1.f, 0.f,
};
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
while(window.isOpen()) {
window.handleMessages();
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(programID);
glUniformMatrix4fv(MatrixID, 1, GL_FALSE, MVP.getArray());
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(
0,
3,
GL_FLOAT,
GL_FALSE,
0,
(void*)0
);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
window.changeBuffers();
}
glDeleteBuffers(1, &vertexbuffer);
glDeleteProgram(programID);
return 0;
}
|