|
@@ -387,6 +387,12 @@ int main()
|
|
|
|
|
|
generate_cube_mesh(mesh, colors, uvs, normals);
|
|
generate_cube_mesh(mesh, colors, uvs, normals);
|
|
|
|
|
|
|
|
+ for (size_t tri = 0; tri < TRIS_PER_CUBE; ++tri) {
|
|
|
|
+ for (size_t vert = 0; vert < TRI_VERTICES; ++vert) {
|
|
|
|
+ printf(V4_Fmt"\n", V4_Arg(normals[tri][vert]));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
{
|
|
{
|
|
GLuint position_buffer_id;
|
|
GLuint position_buffer_id;
|
|
glGenBuffers(1, &position_buffer_id);
|
|
glGenBuffers(1, &position_buffer_id);
|
|
@@ -423,6 +429,24 @@ int main()
|
|
NULL);
|
|
NULL);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ {
|
|
|
|
+ GLuint normal_buffer_id;
|
|
|
|
+ glGenBuffers(1, &normal_buffer_id);
|
|
|
|
+ glBindBuffer(GL_ARRAY_BUFFER, normal_buffer_id);
|
|
|
|
+ glBufferData(GL_ARRAY_BUFFER,
|
|
|
|
+ sizeof(normals),
|
|
|
|
+ normals,
|
|
|
|
+ GL_STATIC_DRAW);
|
|
|
|
+ GLuint normal_index = 2;
|
|
|
|
+ glEnableVertexAttribArray(normal_index);
|
|
|
|
+ glVertexAttribPointer(normal_index,
|
|
|
|
+ V4_COMPS,
|
|
|
|
+ GL_FLOAT,
|
|
|
|
+ GL_FALSE,
|
|
|
|
+ 0,
|
|
|
|
+ NULL);
|
|
|
|
+ }
|
|
|
|
+
|
|
glfwSetKeyCallback(window, key_callback);
|
|
glfwSetKeyCallback(window, key_callback);
|
|
glfwSetFramebufferSizeCallback(window, window_size_callback);
|
|
glfwSetFramebufferSizeCallback(window, window_size_callback);
|
|
double prev_time = 0.0;
|
|
double prev_time = 0.0;
|