90 lines
1.7 KiB
C++
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() {}
|