1
+
2
+ #include " Cube.h"
3
+ #include " Window.h"
4
+
5
+
6
+ Cube::Cube (GLuint shader){
7
+ // Shader program
8
+ this ->shaderProgram = shader;
9
+
10
+ // VAO objects
11
+ // Create array object and buffers, remember to delete!
12
+ glGenVertexArrays (1 , &VAO);
13
+ glGenBuffers (1 , &VBO);
14
+ glGenBuffers (1 , &EBO);
15
+ glGenBuffers (1 , &NBO);
16
+
17
+ // Bind VAO
18
+ glBindVertexArray (VAO);
19
+
20
+ // Bind VBO
21
+ glBindBuffer (GL_ARRAY_BUFFER, VBO);
22
+ glBufferData (GL_ARRAY_BUFFER, sizeof (vertices_), vertices_, GL_STATIC_DRAW);
23
+
24
+ glEnableVertexAttribArray (0 );
25
+ glVertexAttribPointer (0 , 3 , GL_FLOAT, GL_FALSE, 3 * sizeof (GLfloat), (GLvoid*)0 );
26
+
27
+ // Bind EBO
28
+ glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, EBO);
29
+ glBufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices_), indices_, GL_STATIC_DRAW);
30
+
31
+ // Bind the normals
32
+ glBindBuffer (GL_ARRAY_BUFFER, NBO);
33
+ glBufferData (GL_ARRAY_BUFFER, sizeof (normals_), normals_, GL_STATIC_DRAW);
34
+
35
+ glEnableVertexAttribArray (1 );
36
+ glVertexAttribPointer (1 , 3 , GL_FLOAT, GL_FALSE, 3 *sizeof (GLfloat), (GLvoid*)0 );
37
+
38
+ glBindBuffer (GL_ARRAY_BUFFER, 0 );
39
+ glBindVertexArray (0 );
40
+ }
41
+
42
+ Cube::~Cube (){
43
+ glDeleteVertexArrays (1 , &VAO);
44
+ glDeleteBuffers (1 , &VBO);
45
+ glDeleteBuffers (1 , &NBO);
46
+ glDeleteBuffers (1 , &EBO);
47
+ }
48
+
49
+ void Cube::draw (glm::mat4 C){
50
+
51
+ this ->toWorld = C;
52
+
53
+ // Draw
54
+ glm::mat4 modelview = Window::V * toWorld;
55
+
56
+ uProjection = glGetUniformLocation (shaderProgram, " projection" );
57
+ uModelview = glGetUniformLocation (shaderProgram, " modelview" );
58
+ // Now send these values to the shader program
59
+ glUniformMatrix4fv (uProjection, 1 , GL_FALSE, &Window::P[0 ][0 ]);
60
+ glUniformMatrix4fv (uModelview, 1 , GL_FALSE, &modelview[0 ][0 ]);
61
+ glUniformMatrix4fv (glGetUniformLocation (shaderProgram, " model" ), 1 , GL_FALSE, &this ->toWorld [0 ][0 ]);
62
+
63
+ glBindVertexArray (VAO);
64
+ glDrawElements (GL_TRIANGLES, 36 , GL_UNSIGNED_INT, 0 );
65
+ // glDrawArrays(GL_POINTS, 0, 24);
66
+ glBindVertexArray (0 );
67
+ }
68
+
69
+ void Cube::update (){
70
+
71
+ }
0 commit comments