summaryrefslogtreecommitdiffstats
path: root/src/RendererSection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/RendererSection.cpp')
-rw-r--r--src/RendererSection.cpp118
1 files changed, 56 insertions, 62 deletions
diff --git a/src/RendererSection.cpp b/src/RendererSection.cpp
index e19043d..df8d3c7 100644
--- a/src/RendererSection.cpp
+++ b/src/RendererSection.cpp
@@ -7,37 +7,17 @@
#include "Renderer.hpp"
#include "RendererSectionData.hpp"
-const GLfloat uv_coords[] = {
- 0.0f, 0.0f,
- 1.0f, 0.0f,
- 1.0f, 1.0f,
- 0.0f, 1.0f,
-
-};
-
-const GLuint magicUniqueConstant = 88375;
-GLuint RendererSection::VboUvs = magicUniqueConstant;
-
RendererSection::RendererSection(const RendererSectionData &data) {
OPTICK_EVENT();
- if (VboUvs == magicUniqueConstant) {
- glGenBuffers(1, &VboUvs);
-
- //Cube UVs
- glBindBuffer(GL_ARRAY_BUFFER, VboUvs);
- glBufferData(GL_ARRAY_BUFFER, sizeof(uv_coords), uv_coords, GL_STATIC_DRAW);
-
- LOG(INFO) << "Created VBOs with UVs (" << VboUvs << ") for faces";
- }
glGenVertexArrays(1, &Vao);
-
+
glGenBuffers(VBOCOUNT, Vbo);
glBindVertexArray(Vao);
{
//Cube vertices
- GLuint VertAttribPos = 3;
+ GLuint VertAttribPos = 0;
glBindBuffer(GL_ARRAY_BUFFER, Vbo[POSITIONS]);
glVertexAttribPointer(VertAttribPos, 4, GL_FLOAT, GL_FALSE, 4 * 4 * sizeof(GLfloat), nullptr);
glEnableVertexAttribArray(VertAttribPos);
@@ -54,50 +34,63 @@ RendererSection::RendererSection(const RendererSectionData &data) {
glVertexAttribPointer(VertAttribPos + 3, 4, GL_FLOAT, GL_FALSE, 4 * 4 * sizeof(GLfloat), (void*)(3 * 4 * sizeof(GLfloat)));
glEnableVertexAttribArray(VertAttribPos + 3);
glVertexAttribDivisor(VertAttribPos + 3, 1);
+ glCheckError();
- //Cube UVs
- GLuint UvAttribPos = 2;
- glBindBuffer(GL_ARRAY_BUFFER, VboUvs);
- glVertexAttribPointer(UvAttribPos, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(GLfloat), nullptr);
+ //Cube uvs
+ GLuint UvAttribPos = 4;
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[UVS]);
+ glVertexAttribPointer(UvAttribPos, 2, GL_FLOAT, GL_FALSE, 4 * 2 * sizeof(GLfloat), nullptr);
glEnableVertexAttribArray(UvAttribPos);
+ glVertexAttribDivisor(UvAttribPos, 1);
+
+ glVertexAttribPointer(UvAttribPos + 1, 2, GL_FLOAT, GL_FALSE, 4 * 2 * sizeof(GLfloat), (void*)(1 * 2 * sizeof(GLfloat)));
+ glEnableVertexAttribArray(UvAttribPos + 1);
+ glVertexAttribDivisor(UvAttribPos + 1, 1);
+
+ glVertexAttribPointer(UvAttribPos + 2, 2, GL_FLOAT, GL_FALSE, 4 * 2 * sizeof(GLfloat), (void*)(2 * 2 * sizeof(GLfloat)));
+ glEnableVertexAttribArray(UvAttribPos + 2);
+ glVertexAttribDivisor(UvAttribPos + 2, 1);
- //Textures
- GLuint textureAttribPos = 11;
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[TEXTURES]);
- glVertexAttribPointer(textureAttribPos, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(GLfloat), nullptr);
- glEnableVertexAttribArray(textureAttribPos);
- glVertexAttribDivisor(textureAttribPos, 1);
+ glVertexAttribPointer(UvAttribPos + 3, 2, GL_FLOAT, GL_FALSE, 4 * 2 * sizeof(GLfloat), (void*)(3 * 2 * sizeof(GLfloat)));
+ glEnableVertexAttribArray(UvAttribPos + 3);
+ glVertexAttribDivisor(UvAttribPos + 3, 1);
glCheckError();
- //TextureLayers
- GLuint layerAttribPos = 14;
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[LAYERS]);
- glVertexAttribPointer(layerAttribPos, 1, GL_FLOAT, GL_FALSE, sizeof(GLfloat), nullptr);
- glEnableVertexAttribArray(layerAttribPos);
- glVertexAttribDivisor(layerAttribPos, 1);
- glCheckError();
-
- //TextureFrames
- GLuint framesAttribPos = 15;
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[FRAMES]);
- glVertexAttribPointer(framesAttribPos, 1, GL_FLOAT, GL_FALSE, sizeof(GLfloat), nullptr);
- glEnableVertexAttribArray(framesAttribPos);
- glVertexAttribDivisor(framesAttribPos, 1);
- glCheckError();
+ //Uv Layer
+ GLuint uvLayerAttribPos = 8;
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[UVLAYERS]);
+ glVertexAttribPointer(uvLayerAttribPos, 1, GL_FLOAT, GL_FALSE, sizeof(GLfloat), nullptr);
+ glEnableVertexAttribArray(uvLayerAttribPos);
+ glVertexAttribDivisor(uvLayerAttribPos, 1);
+ glCheckError();
+
+ //Animation
+ GLuint animationAttribPos = 9;
+ glCheckError();
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[ANIMATIONS]);
+ glCheckError();
+ glVertexAttribPointer(animationAttribPos, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(GLfloat), nullptr);
+ glCheckError();
+ glEnableVertexAttribArray(animationAttribPos);
+ glCheckError();
+ glVertexAttribDivisor(animationAttribPos, 1);
+ glCheckError();
//Color
- GLuint colorAttribPos = 12;
+ GLuint colorAttribPos = 10;
glBindBuffer(GL_ARRAY_BUFFER, Vbo[COLORS]);
glVertexAttribPointer(colorAttribPos, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), nullptr);
glEnableVertexAttribArray(colorAttribPos);
glVertexAttribDivisor(colorAttribPos, 1);
+ glCheckError();
//Light
- GLuint lightAttribPos = 13;
+ GLuint lightAttribPos = 11;
glBindBuffer(GL_ARRAY_BUFFER, Vbo[LIGHTS]);
glVertexAttribPointer(lightAttribPos, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(GLfloat), nullptr);
glEnableVertexAttribArray(lightAttribPos);
glVertexAttribDivisor(lightAttribPos, 1);
+ glCheckError();
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
@@ -150,28 +143,29 @@ size_t RendererSection::GetHash() {
void RendererSection::UpdateData(const RendererSectionData & data) {
OPTICK_EVENT();
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[TEXTURES]);
- glBufferData(GL_ARRAY_BUFFER, data.textures.size() * sizeof(glm::vec4), data.textures.data(), GL_DYNAMIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[LAYERS]);
- glBufferData(GL_ARRAY_BUFFER, data.textureLayers.size() * 1* sizeof(GLfloat), data.textureLayers.data(), GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[POSITIONS]);
+ glBufferData(GL_ARRAY_BUFFER, data.positions.size() * sizeof(glm::vec4), data.positions.data(), GL_DYNAMIC_DRAW);
+
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[UVS]);
+ glBufferData(GL_ARRAY_BUFFER, data.uvs.size() * sizeof(glm::vec2), data.uvs.data(), GL_DYNAMIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[FRAMES]);
- glBufferData(GL_ARRAY_BUFFER, data.textureFrames.size() * 1 * sizeof(GLfloat), data.textureFrames.data(), GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[UVLAYERS]);
+ glBufferData(GL_ARRAY_BUFFER, data.uvLayers.size() * sizeof(GLfloat), data.uvLayers.data(), GL_DYNAMIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[POSITIONS]);
- glBufferData(GL_ARRAY_BUFFER, data.positions.size() * sizeof(glm::vec4), data.positions.data(), GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[ANIMATIONS]);
+ glBufferData(GL_ARRAY_BUFFER, data.animations.size() * sizeof(glm::vec2), data.animations.data(), GL_DYNAMIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[COLORS]);
- glBufferData(GL_ARRAY_BUFFER, data.colors.size() * sizeof(glm::vec3), data.colors.data(), GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[COLORS]);
+ glBufferData(GL_ARRAY_BUFFER, data.colors.size() * sizeof(glm::vec3), data.colors.data(), GL_DYNAMIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, Vbo[LIGHTS]);
- glBufferData(GL_ARRAY_BUFFER, data.lights.size() * sizeof(glm::vec2), data.lights.data(), GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, Vbo[LIGHTS]);
+ glBufferData(GL_ARRAY_BUFFER, data.lights.size() * sizeof(glm::vec2), data.lights.data(), GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glCheckError();
- numOfFaces = data.textures.size();
+ numOfFaces = data.animations.size();
sectionPos = data.sectionPos;
hash = data.hash;
}