From cc514709931d8f3657fb39d918d13b34fb4f127b Mon Sep 17 00:00:00 2001 From: AthulJoseph27 Date: Tue, 26 Jan 2021 13:59:54 +0530 Subject: [PATCH] Buffer Abstraction --- src/VertexArray.h | 2 +- src/VertexBufferLayout.h | 9 +++++---- src/a.out | Bin 83560 -> 105244 bytes src/main.cpp | 18 +++++++++--------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/VertexArray.h b/src/VertexArray.h index 4e2719f..2de27c1 100644 --- a/src/VertexArray.h +++ b/src/VertexArray.h @@ -48,7 +48,7 @@ void VertexArray::AddBuffer(const VertexBuffer &vb, const VertexBufferLayout &la { const auto &element = elements[i]; glEnableVertexAttribArray(i); - glVertexAttribPointer(i, element.count, element.type, element.normalize, layout.GetStride(), (const void *)offSet); + glVertexAttribPointer(i, element.count, element.type, element.normalize, layout.GetStride(), 0); offSet += element.count * VertexBufferElement::GetSizeOfType(element.type); } } \ No newline at end of file diff --git a/src/VertexBufferLayout.h b/src/VertexBufferLayout.h index e4614f9..8aa8d23 100644 --- a/src/VertexBufferLayout.h +++ b/src/VertexBufferLayout.h @@ -19,6 +19,7 @@ struct VertexBufferElement case GL_UNSIGNED_BYTE: return 1; } + // std::cout << type << std::endl; assert(false); return 0; } @@ -37,7 +38,7 @@ class VertexBufferLayout template void Push(unsigned int count) { - static_assert(false); + static_assert(true, "Assertion Failed"); } inline const std::vector GetElements() const { return m_Elements; } @@ -47,20 +48,20 @@ class VertexBufferLayout template <> void VertexBufferLayout::Push(unsigned int count) { - m_Elements.push_back({count, GL_FLOAT, GL_FALSE}); + m_Elements.push_back({GL_FLOAT, count, GL_FALSE}); m_Stride += count * VertexBufferElement::GetSizeOfType(GL_FLOAT); } template <> void VertexBufferLayout::Push(unsigned int count) { - m_Elements.push_back({count, GL_UNSIGNED_INT, GL_FALSE}); + m_Elements.push_back({GL_UNSIGNED_INT, count, GL_FALSE}); m_Stride += count * VertexBufferElement::GetSizeOfType(GL_UNSIGNED_INT); } template <> void VertexBufferLayout::Push(unsigned int count) { - m_Elements.push_back({count, GL_UNSIGNED_BYTE, GL_TRUE}); + m_Elements.push_back({GL_UNSIGNED_BYTE, count, GL_TRUE}); m_Stride += count * VertexBufferElement::GetSizeOfType(GL_UNSIGNED_BYTE); } diff --git a/src/a.out b/src/a.out index a2d944c4ff6a7c5b7a22c0707dee4a9fd2ffc0aa..1c5b352ed9bdea974ce582b5cce9061f42de37d9 100755 GIT binary patch literal 105244 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 EAN^Xk-~a#s delta 22206 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 Hv+92X|FLdL diff --git a/src/main.cpp b/src/main.cpp index d021e79..5037201 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,7 +6,7 @@ #include "Renderer.h" #include "VertexBuffer.h" #include "IndexBuffer.h" -// #include "VertexArray.h" +#include "VertexArray.h" struct ShaderProgramSource { @@ -141,14 +141,14 @@ int main() glGenVertexArrays(1, &vao); glBindVertexArray(vao); - // VertexArray va; + VertexArray va; VertexBuffer vb(points, 12 * sizeof(float)); - // VertexBufferLayout layout; - // layout.Push(3); - // va.AddBuffer(vb, layout); + VertexBufferLayout layout; + layout.Push(3); + va.AddBuffer(vb, layout); - glEnableVertexAttribArray(0); - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL); + // glEnableVertexAttribArray(0); + // glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL); IndexBuffer ib(indices, 6); struct ShaderProgramSource shaderSource = ParseShader("Basic.shader"); @@ -170,8 +170,8 @@ int main() glUseProgram(shader); glUniform4f(location, r, 0.7f, 0.5f, 1.0f); - glBindVertexArray(vao); - // va.Bind(); + // glBindVertexArray(vao); + va.Bind(); ib.Bind(); if (r > 1.0f) increment = -0.05;