diff --git a/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.cpp b/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.cpp index e41b6f1..87a36f5 100644 --- a/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.cpp +++ b/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.cpp @@ -103,7 +103,7 @@ namespace Prism { uint32_t attribIndex = 0; for (const auto& element : layout) { - auto glBaseType = ShaderDataTypeToOpenGLBaseType(element.Type); + const auto glBaseType = ShaderDataTypeToOpenGLBaseType(element.Type); glEnableVertexAttribArray(attribIndex); if (glBaseType == GL_INT) { diff --git a/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.h b/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.h index dacfd75..d093964 100644 --- a/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.h +++ b/Prism/src/Prism/Platform/OpenGL/OpenGLPipeline.h @@ -14,8 +14,8 @@ namespace Prism { OpenGLPipeline(const PipelineSpecification& spec); virtual ~OpenGLPipeline(); - virtual PipelineSpecification& GetSpecification() { return m_Specification; } - virtual const PipelineSpecification& GetSpecification() const { return m_Specification; } + virtual PipelineSpecification& GetSpecification() override { return m_Specification; } + virtual const PipelineSpecification& GetSpecification() const override { return m_Specification; } virtual void Invalidate() override; diff --git a/Prism/src/Prism/Platform/OpenGL/OpenGLVertexArray.cpp b/Prism/src/Prism/Platform/OpenGL/OpenGLVertexArray.cpp deleted file mode 100644 index 264b670..0000000 --- a/Prism/src/Prism/Platform/OpenGL/OpenGLVertexArray.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// -// Created by sfd on 25-11-29. -// - -#include "OpenGLVertexArray.h" - -#include "glad/glad.h" -#include "Prism/Renderer/Renderer.h" - -namespace Prism -{ - static GLenum ShaderDataTypeToOpenGLBaseType(ShaderDataType type) - { - switch (type) - { - case ShaderDataType::Float: return GL_FLOAT; - case ShaderDataType::Float2: return GL_FLOAT; - case ShaderDataType::Float3: return GL_FLOAT; - case ShaderDataType::Float4: return GL_FLOAT; - case ShaderDataType::Mat3: return GL_FLOAT; - case ShaderDataType::Mat4: return GL_FLOAT; - case ShaderDataType::Int: return GL_INT; - case ShaderDataType::Int2: return GL_INT; - case ShaderDataType::Int3: return GL_INT; - case ShaderDataType::Int4: return GL_INT; - case ShaderDataType::Bool: return GL_BOOL; - } - - PM_CORE_ASSERT(false, "Unknown ShaderDataType!"); - return 0; - } - - OpenGLVertexArray::OpenGLVertexArray() - { - Renderer::Submit([this]() { - glCreateVertexArrays(1, &m_RendererID); - }); - } - - OpenGLVertexArray::~OpenGLVertexArray() - { - GLuint rendererID = m_RendererID; - Renderer::Submit([rendererID](){ - glDeleteVertexArrays(1, &rendererID); - }); - } - - void OpenGLVertexArray::Bind() const - { - Ref instance = this; - Renderer::Submit([instance](){ - glBindVertexArray(instance->m_RendererID); - }); - } - - void OpenGLVertexArray::Unbind() const - { - Renderer::Submit([this](){ - glBindVertexArray(0); - }); - } - - void OpenGLVertexArray::AddVertexBuffer(const Ref& vertexBuffer) - { - const auto size = vertexBuffer->GetLayout().GetElements().size(); - PM_CORE_ASSERT(size, "Vertex Buffer has no layout!"); - - Bind(); - vertexBuffer->Bind(); - Ref instance = this; - Renderer::Submit([instance, vertexBuffer]() mutable { - const auto& layout = vertexBuffer->GetLayout(); - for (const auto& element : layout) - { - auto glBaseType = ShaderDataTypeToOpenGLBaseType(element.Type); - glEnableVertexAttribArray(instance->m_VertexBufferIndex); - if (glBaseType == GL_INT) - { - glVertexAttribIPointer(instance->m_VertexBufferIndex, - element.GetComponentCount(), - glBaseType, - layout.GetStride(), - (const void*)(intptr_t)element.Offset); - } - else - { - glVertexAttribPointer(instance->m_VertexBufferIndex, - element.GetComponentCount(), - glBaseType, - element.Normalized ? GL_TRUE : GL_FALSE, - layout.GetStride(), - (const void*)(intptr_t)element.Offset); - } - instance->m_VertexBufferIndex++; - } - }); - m_VertexBuffers.push_back(vertexBuffer); - } - - void OpenGLVertexArray::SetIndexBuffer(const Ref& indexBuffer) - { - Bind(); - indexBuffer->Bind(); - - m_IndexBuffer = indexBuffer; - } -} diff --git a/Prism/src/Prism/Platform/OpenGL/OpenGLVertexArray.h b/Prism/src/Prism/Platform/OpenGL/OpenGLVertexArray.h deleted file mode 100644 index a090797..0000000 --- a/Prism/src/Prism/Platform/OpenGL/OpenGLVertexArray.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Created by sfd on 25-11-29. -// - -#ifndef OPENGLVERTEXARRAY_H -#define OPENGLVERTEXARRAY_H - -#include "Prism/Renderer/VertexArray.h" - -namespace Prism -{ - class OpenGLVertexArray : public VertexArray - { - public: - OpenGLVertexArray(); - virtual ~OpenGLVertexArray(); - - virtual void Bind() const override; - virtual void Unbind() const override; - - virtual void AddVertexBuffer(const Ref& vertexBuffer) override; - virtual void SetIndexBuffer(const Ref& indexBuffer) override; - - virtual const std::vector>& GetVertexBuffers() const override { return m_VertexBuffers; } - virtual const Ref& GetIndexBuffer() const override { return m_IndexBuffer; } - virtual RendererID GetRendererID() const override { return m_RendererID; } - private: - RendererID m_RendererID = 0; - uint32_t m_VertexBufferIndex = 0; - std::vector> m_VertexBuffers; - Ref m_IndexBuffer; - }; -} - - -#endif //OPENGLVERTEXARRAY_H diff --git a/Prism/src/Prism/Renderer/Mesh.h b/Prism/src/Prism/Renderer/Mesh.h index aee4a26..6ffbbe6 100644 --- a/Prism/src/Prism/Renderer/Mesh.h +++ b/Prism/src/Prism/Renderer/Mesh.h @@ -7,10 +7,10 @@ #include +#include "IndexBuffer.h" #include "Material.h" #include "Pipeline.h" #include "Shader.h" -#include "VertexArray.h" #include "Prism/Core/TimeStep.h" #include "Prism/Core/Math/AABB.h" diff --git a/Prism/src/Prism/Renderer/Renderer2D.cpp b/Prism/src/Prism/Renderer/Renderer2D.cpp index 90ad4e2..b6019e3 100644 --- a/Prism/src/Prism/Renderer/Renderer2D.cpp +++ b/Prism/src/Prism/Renderer/Renderer2D.cpp @@ -6,7 +6,6 @@ #include "Renderer.h" #include "Shader.h" -#include "VertexArray.h" namespace Prism { diff --git a/Prism/src/Prism/Renderer/VertexArray.cpp b/Prism/src/Prism/Renderer/VertexArray.cpp deleted file mode 100644 index 0136f01..0000000 --- a/Prism/src/Prism/Renderer/VertexArray.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by sfd on 25-11-29. -// - -#include "VertexArray.h" - -#include "Prism/Platform/OpenGL/OpenGLVertexArray.h" - -namespace Prism -{ - Ref VertexArray::Create() - { - switch (RendererAPI::Current()) - { - case RendererAPIType::None: PM_CORE_ASSERT(false, "RendererAPI::None is currently not supported!"); - return nullptr; - case RendererAPIType::OpenGL: return Ref::Create(); - } - - PM_CORE_ASSERT(false, "Unknown RendererAPI"); - return nullptr; - } -} diff --git a/Prism/src/Prism/Renderer/VertexArray.h b/Prism/src/Prism/Renderer/VertexArray.h deleted file mode 100644 index 5420bfd..0000000 --- a/Prism/src/Prism/Renderer/VertexArray.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// Created by sfd on 25-11-29. -// - -#ifndef VERTEXARRAY_H -#define VERTEXARRAY_H -#include "IndexBuffer.h" -#include "VertexBuffer.h" -#include "Prism/Core/Ref.h" - - -namespace Prism -{ - class PRISM_API VertexArray : public RefCounted - { - public: - virtual ~VertexArray() {} - - static Ref Create(); - - virtual void Bind() const = 0; - virtual void Unbind() const = 0; - - virtual void AddVertexBuffer(const Ref& vertexBuffer) = 0; - virtual void SetIndexBuffer(const Ref& indexBuffer) = 0; - - virtual const std::vector>& GetVertexBuffers() const = 0; - virtual const Ref& GetIndexBuffer() const = 0; - - virtual RendererID GetRendererID() const = 0; - }; -} - - -#endif //VERTEXARRAY_H