BlockGame/blocks/BlockRenderer.cpp
2022-02-05 21:44:31 +01:00

90 lines
1.7 KiB
C++

//
// Created by lukas on 05.02.22.
//
#include "BlockRenderer.h"
#define GL_GLEXT_PROTOTYPES
#include <GL/gl.h>
VertexArray *BlockRenderer::setVertexArray() {
float cube_vertices[] = {
// front
-1.0, -1.0, 1.0,
1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, 1.0, 1.0,
// back
-1.0, -1.0, -1.0,
1.0, -1.0, -1.0,
1.0, 1.0, -1.0,
-1.0, 1.0, -1.0
};
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();
return s;
}
BlockRenderer::BlockRenderer() {}