diff --git a/Camera.h b/Camera.h index 48d0355..a6c388a 100644 --- a/Camera.h +++ b/Camera.h @@ -2,6 +2,7 @@ #include #include +#include #include "Spatial.h" @@ -18,10 +19,9 @@ class Camera : public Spatial { } glm::mat4 get_view() { - return view; + return glm::inverse(get_matrix()); } private: glm::mat4 projection; - glm::mat4 view; }; \ No newline at end of file diff --git a/MCRenderer.cpp b/MCRenderer.cpp index 7e3ad30..46c38bb 100644 --- a/MCRenderer.cpp +++ b/MCRenderer.cpp @@ -1,19 +1,19 @@ #include "MCRenderer.h" #include "Framebuffer3D.h" #include "VertexBuffer.h" +#include MCRenderer::MCRenderer() : render_shader(Shader("Shader/mc.vs", "Shader/mc.fs", "Shader/mc.gs")), noise_shader(Shader("Shader/noise.vs", "Shader/noise.fs")), noise(Framebuffer3D(64, 64, 64)), - camera(Camera(90, 1920, 1080, 0.1, 100.0)) { - float rectangle_data[12] = {-1.0f, -1.0f, // - -1.0, 1.0, // - 1.0, -1.0, // - 1.0f, 1.0f, // - -1.0, 1.0, // - 1.0, -1.0}; + camera(Camera(90, 1920, 1080, 0.1, 1000.0)) { + float data[6][2] = {{-1.0f, -1.0f}, {-1.0, 1.0}, {1.0, -1.0}, + {1.0f, 1.0f}, {-1.0, 1.0}, {1.0, -1.0}}; - vertex_rectangle.set_data(6, rectangle_data, GL_STATIC_DRAW); + // Move the camera a bit + camera.translate(glm::vec3(32.0, 32.0, 32.0)); + + vertex_rectangle.set_data(sizeof(data), data, GL_STATIC_DRAW); } void MCRenderer::render(float delta) { @@ -40,13 +40,13 @@ void MCRenderer::render(float delta) { // Bind the screen framebuffer glBindFramebuffer(GL_FRAMEBUFFER, 0); - glDrawBuffer(GL_BACK); + // glDrawBuffer(GL_BACK); glClearColor(0.6f, 0.9f, 0.9f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Set the camera position - camera.translate(glm::vec3(-32.0, -32.0, -32.0)); + camera.rotate(delta, glm::vec3(0.0, 1.0, 0.0)); // Bind the camera to the rendering shader render_shader.setMat4("proj", camera.get_projection()); @@ -59,4 +59,6 @@ void MCRenderer::render(float delta) { mc_points.bind(); glDrawArrays(GL_POINTS, 0, 64 * 64 * 64); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + time_passed += delta; } \ No newline at end of file diff --git a/MCRenderer.h b/MCRenderer.h index 362a45c..512758e 100644 --- a/MCRenderer.h +++ b/MCRenderer.h @@ -21,4 +21,8 @@ class MCRenderer { VertexBuffer mc_points; Camera camera; + + float time_passed = 0.0; + + float *rectangle_data; }; diff --git a/VertexBuffer.cpp b/VertexBuffer.cpp index 8452c19..77c3f84 100644 --- a/VertexBuffer.cpp +++ b/VertexBuffer.cpp @@ -5,7 +5,7 @@ VertexBuffer::VertexBuffer() { glGenBuffers(1, &vertex_buffer); } -void VertexBuffer::set_data(unsigned int size, const void *data, int flag) { +void VertexBuffer::set_data(int size, const void *data, int flag) { this->size = size; glBindVertexArray(vertex_array); diff --git a/VertexBuffer.h b/VertexBuffer.h index 98f0653..53eae3e 100644 --- a/VertexBuffer.h +++ b/VertexBuffer.h @@ -10,7 +10,7 @@ class VertexBuffer { public: VertexBuffer(); - void set_data(unsigned int size, const void *data, int flag); + void set_data(int size, const void *data, int flag); void bind(); @@ -19,5 +19,5 @@ class VertexBuffer { private: GLuint vertex_array; GLuint vertex_buffer; - unsigned int size; + int size; }; diff --git a/main.cpp b/main.cpp index 3fd93c0..d9018cc 100644 --- a/main.cpp +++ b/main.cpp @@ -54,7 +54,7 @@ int main() { // render loop // ----------- while (!glfwWindowShouldClose(window)) { - renderer.render(1.0); // TODO: Proper delta + renderer.render(0.1); // TODO: Proper delta // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) glfwSwapBuffers(window);