remove VertexArray files

This commit is contained in:
2025-12-16 11:09:28 +08:00
parent 57ca6c30f5
commit 2b82b30de1
8 changed files with 4 additions and 206 deletions

View File

@ -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)
{

View File

@ -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;

View File

@ -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<const OpenGLVertexArray> instance = this;
Renderer::Submit([instance](){
glBindVertexArray(instance->m_RendererID);
});
}
void OpenGLVertexArray::Unbind() const
{
Renderer::Submit([this](){
glBindVertexArray(0);
});
}
void OpenGLVertexArray::AddVertexBuffer(const Ref<VertexBuffer>& vertexBuffer)
{
const auto size = vertexBuffer->GetLayout().GetElements().size();
PM_CORE_ASSERT(size, "Vertex Buffer has no layout!");
Bind();
vertexBuffer->Bind();
Ref<OpenGLVertexArray> 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>& indexBuffer)
{
Bind();
indexBuffer->Bind();
m_IndexBuffer = indexBuffer;
}
}

View File

@ -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>& vertexBuffer) override;
virtual void SetIndexBuffer(const Ref<IndexBuffer>& indexBuffer) override;
virtual const std::vector<Ref<VertexBuffer>>& GetVertexBuffers() const override { return m_VertexBuffers; }
virtual const Ref<IndexBuffer>& 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<Ref<VertexBuffer>> m_VertexBuffers;
Ref<IndexBuffer> m_IndexBuffer;
};
}
#endif //OPENGLVERTEXARRAY_H

View File

@ -7,10 +7,10 @@
#include <glm/glm.hpp>
#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"

View File

@ -6,7 +6,6 @@
#include "Renderer.h"
#include "Shader.h"
#include "VertexArray.h"
namespace Prism
{

View File

@ -1,23 +0,0 @@
//
// Created by sfd on 25-11-29.
//
#include "VertexArray.h"
#include "Prism/Platform/OpenGL/OpenGLVertexArray.h"
namespace Prism
{
Ref<VertexArray> 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<OpenGLVertexArray>::Create();
}
PM_CORE_ASSERT(false, "Unknown RendererAPI");
return nullptr;
}
}

View File

@ -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<VertexArray> Create();
virtual void Bind() const = 0;
virtual void Unbind() const = 0;
virtual void AddVertexBuffer(const Ref<VertexBuffer>& vertexBuffer) = 0;
virtual void SetIndexBuffer(const Ref<IndexBuffer>& indexBuffer) = 0;
virtual const std::vector<Ref<VertexBuffer>>& GetVertexBuffers() const = 0;
virtual const Ref<IndexBuffer>& GetIndexBuffer() const = 0;
virtual RendererID GetRendererID() const = 0;
};
}
#endif //VERTEXARRAY_H