remove VertexArray files
This commit is contained in:
@ -103,7 +103,7 @@ namespace Prism {
|
|||||||
uint32_t attribIndex = 0;
|
uint32_t attribIndex = 0;
|
||||||
for (const auto& element : layout)
|
for (const auto& element : layout)
|
||||||
{
|
{
|
||||||
auto glBaseType = ShaderDataTypeToOpenGLBaseType(element.Type);
|
const auto glBaseType = ShaderDataTypeToOpenGLBaseType(element.Type);
|
||||||
glEnableVertexAttribArray(attribIndex);
|
glEnableVertexAttribArray(attribIndex);
|
||||||
if (glBaseType == GL_INT)
|
if (glBaseType == GL_INT)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -14,8 +14,8 @@ namespace Prism {
|
|||||||
OpenGLPipeline(const PipelineSpecification& spec);
|
OpenGLPipeline(const PipelineSpecification& spec);
|
||||||
virtual ~OpenGLPipeline();
|
virtual ~OpenGLPipeline();
|
||||||
|
|
||||||
virtual PipelineSpecification& GetSpecification() { return m_Specification; }
|
virtual PipelineSpecification& GetSpecification() override { return m_Specification; }
|
||||||
virtual const PipelineSpecification& GetSpecification() const { return m_Specification; }
|
virtual const PipelineSpecification& GetSpecification() const override { return m_Specification; }
|
||||||
|
|
||||||
virtual void Invalidate() override;
|
virtual void Invalidate() override;
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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
|
|
||||||
@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
|
#include "IndexBuffer.h"
|
||||||
#include "Material.h"
|
#include "Material.h"
|
||||||
#include "Pipeline.h"
|
#include "Pipeline.h"
|
||||||
#include "Shader.h"
|
#include "Shader.h"
|
||||||
#include "VertexArray.h"
|
|
||||||
#include "Prism/Core/TimeStep.h"
|
#include "Prism/Core/TimeStep.h"
|
||||||
#include "Prism/Core/Math/AABB.h"
|
#include "Prism/Core/Math/AABB.h"
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
#include "Renderer.h"
|
#include "Renderer.h"
|
||||||
#include "Shader.h"
|
#include "Shader.h"
|
||||||
#include "VertexArray.h"
|
|
||||||
|
|
||||||
namespace Prism
|
namespace Prism
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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
|
|
||||||
Reference in New Issue
Block a user