2022-02-05 20:44:31 +00:00
|
|
|
//
|
|
|
|
// Created by lukas on 05.02.22.
|
|
|
|
//
|
|
|
|
|
|
|
|
#include "BlockRenderer.h"
|
2022-02-06 13:47:33 +00:00
|
|
|
#include "../gl/Texture.h"
|
2022-02-05 20:44:31 +00:00
|
|
|
|
|
|
|
#define GL_GLEXT_PROTOTYPES
|
|
|
|
|
|
|
|
#include <GL/gl.h>
|
|
|
|
|
|
|
|
VertexArray *BlockRenderer::setVertexArray() {
|
|
|
|
float cube_vertices[] = {
|
|
|
|
// front
|
2022-02-06 13:47:33 +00:00
|
|
|
-1.0, -1.0, 1.0, 0.0f, 0.0f,
|
|
|
|
1.0, -1.0, 1.0, 1.0f, 0.0f,
|
|
|
|
1.0, 1.0, 1.0, 0.0f, 1.0f,
|
|
|
|
-1.0, 1.0, 1.0, 1.0f, 1.0f,
|
2022-02-05 20:44:31 +00:00
|
|
|
// back
|
2022-02-06 13:47:33 +00:00
|
|
|
-1.0, -1.0, -1.0, 0.0f, 0.0f,
|
|
|
|
1.0, -1.0, -1.0, 1.0f, 0.0f,
|
|
|
|
1.0, 1.0, -1.0, 0.0f, 1.0f,
|
|
|
|
-1.0, 1.0, -1.0, 1.0f, 1.0f,
|
2022-02-05 20:44:31 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
GLfloat cube_colors[] = {
|
|
|
|
// front colors
|
|
|
|
1.0, 0.0, 0.0,
|
|
|
|
0.0, 1.0, 0.0,
|
|
|
|
0.0, 0.0, 1.0,
|
|
|
|
1.0, 1.0, 1.0,
|
|
|
|
// back colors
|
|
|
|
1.0, 0.0, 0.0,
|
|
|
|
0.0, 1.0, 0.0,
|
|
|
|
0.0, 0.0, 1.0,
|
|
|
|
1.0, 1.0, 1.0
|
|
|
|
};
|
|
|
|
|
|
|
|
// Generate a vertex buffer
|
|
|
|
auto *vb = new VertexBuffer(cube_vertices, sizeof(cube_vertices));
|
|
|
|
|
|
|
|
//
|
|
|
|
return new VertexArray(*vb);
|
|
|
|
}
|
|
|
|
|
|
|
|
IndexBuffer *BlockRenderer::setIndexBuffer() {
|
|
|
|
unsigned cube_elements[] = {
|
|
|
|
// front
|
|
|
|
0, 1, 2,
|
|
|
|
2, 3, 0,
|
|
|
|
// right
|
|
|
|
1, 5, 6,
|
|
|
|
6, 2, 1,
|
|
|
|
// back
|
|
|
|
7, 6, 5,
|
|
|
|
5, 4, 7,
|
|
|
|
// left
|
|
|
|
4, 0, 3,
|
|
|
|
3, 7, 4,
|
|
|
|
// bottom
|
|
|
|
4, 5, 1,
|
|
|
|
1, 0, 4,
|
|
|
|
// top
|
|
|
|
3, 2, 6,
|
|
|
|
6, 7, 3
|
|
|
|
};
|
|
|
|
|
|
|
|
return new IndexBuffer(cube_elements, 36);;
|
|
|
|
}
|
|
|
|
|
|
|
|
Shader BlockRenderer::setShader() {
|
|
|
|
const std::string vertsrc =
|
|
|
|
|
|
|
|
#include "vertex.shader"
|
|
|
|
|
|
|
|
const std::string geosrc =
|
|
|
|
|
|
|
|
#include "geometry.shader"
|
|
|
|
|
|
|
|
const std::string fragsrc =
|
|
|
|
|
|
|
|
#include "fragment.shader"
|
|
|
|
|
|
|
|
Shader s;
|
|
|
|
s.loadShader(vertsrc, geosrc, fragsrc);
|
|
|
|
s.Bind();
|
2022-02-06 13:47:33 +00:00
|
|
|
|
|
|
|
Texture t;
|
|
|
|
t.Bind();
|
|
|
|
glUniform1i(s.getUniformHandle("u_texture"), 0);
|
|
|
|
|
|
|
|
|
2022-02-05 20:44:31 +00:00
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
BlockRenderer::BlockRenderer() {}
|