// // Created by lukas on 05.02.22. // #include "BlockRenderer.h" #include "../gl/Texture.h" #define GL_GLEXT_PROTOTYPES #include VertexArray *BlockRenderer::setVertexArray() { // float cube_vertices[] = { // // front // -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, // // back // -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, // }; float cube_vertices[] = { // front -1, -1, 1, 0, 0, 1, -1, 1, 1, 0, 1, 1, 1, 0, 1, -1, 1, 1, 1, 1, // back -1, -1, -1, 0, 0, 1, -1, -1, 1, 0, 1, 1, -1, 0, 1, -1, 1, -1, 1, 1, }; float cubee[] = { // face #1 1, 1, 1, 1, 0, -1, 1, 1, 1, 1, -1, -1, 1, 0, 1, 1, -1, 1, 0, 0, // face #2 1, 1, 1, 1, 0, 1, -1, 1, 1, 1, 1, -1, -1, 0, 1, 1, 1, -1, 0, 0, // face #3 1, 1, 1, 1, 0, 1, 1, -1, 1, 1, -1, 1, -1, 0, 1, -1, 1, 1, 0, 0, // face #4 -1, -1, -1, 1, 0, -1, 1, -1, 1, 1, 1, 1, -1, 0, 1, 1, -1, -1, 0, 0, // face #5 -1, -1, -1, 1, 0, -1, -1, 1, 1, 1, -1, 1, 1, 0, 1, -1, 1, -1, 0, 0, // face #6 -1, -1, -1, 1, 0, 1, -1, -1, 1, 1, 1, -1, 1, 0, 1, -1, -1, 1, 0, 0,}; // Generate a vertex buffer auto *vb = new VertexBuffer(cubee, sizeof(cubee)); return new VertexArray(*vb); } IndexBuffer *BlockRenderer::setIndexBuffer() { unsigned indexx[] = { 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4, 8, 9, 10, 10, 11, 8, 12, 13, 14, 14, 15, 12, 16, 17, 18, 18, 19, 16, 20, 21, 22, 22, 23, 20, 24, 25, 26, 26, 27, 24, 28, 29, 30, 30, 31, 28 }; 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(indexx, 48); } 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(); Texture t; t.Bind(); glUniform1i(s.getUniformHandle("u_texture"), 0); return s; } BlockRenderer::BlockRenderer() {}