light/modules/renderer/public/buffers.hpp

77 lines
1.2 KiB
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
2025-07-11 00:05:48 +03:30
namespace lt {
2022-03-08 21:19:19 +03:30
class SharedContext;
enum class ConstantBufferIndex
{
ViewProjection = 0u
};
class ConstantBuffer
{
public:
2025-07-11 14:05:59 +03:30
virtual ~ConstantBuffer() = default;
2025-07-06 14:02:50 +03:30
static auto create(
ConstantBufferIndex index,
unsigned int size,
2025-07-11 14:05:59 +03:30
const Ref<SharedContext> &sharedContext
2025-07-06 14:02:50 +03:30
) -> Scope<ConstantBuffer>;
virtual auto map() -> void * = 0;
2022-03-08 21:19:19 +03:30
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;
};
class VertexBuffer
{
public:
2025-07-06 14:02:50 +03:30
static auto create(
float *vertices,
unsigned int stride,
unsigned int count,
2025-07-11 14:05:59 +03:30
const Ref<SharedContext> &sharedContext
2025-07-06 14:02:50 +03:30
) -> Ref<VertexBuffer>;
2022-03-08 21:19:19 +03:30
virtual ~VertexBuffer() = default;
2025-07-06 14:02:50 +03:30
virtual auto map() -> void * = 0;
virtual void un_map() = 0;
2022-03-08 21:19:19 +03:30
2025-07-06 14:02:50 +03:30
virtual void bind() = 0;
virtual void un_bind() = 0;
2022-03-08 21:19:19 +03:30
protected:
VertexBuffer() = default;
};
class IndexBuffer
{
public:
2025-07-11 14:05:59 +03:30
static auto create(
unsigned int *indices,
unsigned int count,
const Ref<SharedContext> &sharedContext
) -> Ref<IndexBuffer>;
2022-03-08 21:19:19 +03:30
virtual ~IndexBuffer() = default;
2025-07-06 14:02:50 +03:30
virtual void bind() = 0;
virtual void un_bind() = 0;
2022-03-08 21:19:19 +03:30
protected:
IndexBuffer() = default;
};
2025-07-11 00:05:48 +03:30
} // namespace lt