It works!

Lots of minor fixes
This commit is contained in:
karl 2021-03-19 23:54:24 +01:00
parent 641d77d2db
commit 7227fef749
6 changed files with 22 additions and 16 deletions

View File

@ -2,6 +2,7 @@
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtx/dual_quaternion.hpp>
#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;
};

View File

@ -1,19 +1,19 @@
#include "MCRenderer.h"
#include "Framebuffer3D.h"
#include "VertexBuffer.h"
#include <glm/ext/matrix_transform.hpp>
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;
}

View File

@ -21,4 +21,8 @@ class MCRenderer {
VertexBuffer mc_points;
Camera camera;
float time_passed = 0.0;
float *rectangle_data;
};

View File

@ -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);

View File

@ -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;
};

View File

@ -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);