light/modules/engine/include/engine/graphics/buffers.hpp

63 lines
1.2 KiB
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
2025-07-05 13:28:41 +03:30
#include <engine/base/base.hpp>
2022-03-08 21:19:19 +03:30
namespace Light {
class SharedContext;
enum class ConstantBufferIndex
{
ViewProjection = 0u
};
//========== CONSTANT_BUFFER ==========//
class ConstantBuffer
{
public:
static Scope<ConstantBuffer> create(ConstantBufferIndex index, unsigned int size, Ref<SharedContext> sharedContext);
2022-03-08 21:19:19 +03:30
virtual void* map() = 0;
virtual void un_map() = 0;
2022-03-08 21:19:19 +03:30
virtual void bind() = 0;
2022-03-08 21:19:19 +03:30
protected:
ConstantBuffer() = default;
};
//========== VERTEX_BUFFER ==========//
class VertexBuffer
{
public:
static Ref<VertexBuffer> create(float* vertices, unsigned int stride, unsigned int count, Ref<SharedContext> sharedContext);
2022-03-08 21:19:19 +03:30
virtual ~VertexBuffer() = default;
virtual void* map() = 0;
virtual void un_map() = 0;
2022-03-08 21:19:19 +03:30
virtual void bind() = 0;
virtual void un_bind() = 0;
2022-03-08 21:19:19 +03:30
protected:
VertexBuffer() = default;
};
//========== INDEX_BUFFER ==========//
class IndexBuffer
{
public:
static Ref<IndexBuffer> create(unsigned int* indices, unsigned int count, Ref<SharedContext> sharedContext);
2022-03-08 21:19:19 +03:30
virtual ~IndexBuffer() = default;
virtual void bind() = 0;
virtual void un_bind() = 0;
2022-03-08 21:19:19 +03:30
protected:
IndexBuffer() = default;
};
2025-07-05 13:28:41 +03:30
} // namespace Light