Files
Copium/CopiumEngine/src/copium/buffer/Buffer.h
T
2026-01-28 23:04:31 +01:00

39 lines
859 B
C++

#pragma once
#include <vulkan/vulkan.hpp>
#include "copium/util/Common.h"
namespace Copium
{
class Buffer
{
CP_DELETE_COPY_AND_MOVE_CTOR(Buffer);
protected:
VkDeviceMemory memory;
VkBuffer handle;
VkDeviceSize size;
int count;
void* mappedData = nullptr;
public:
Buffer(VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkDeviceSize size, int count);
virtual ~Buffer();
void Update(void* indexData, int index);
void UpdateStaging(void* data);
void UpdateStaging(void* data, VkDeviceSize offset, VkDeviceSize size);
void* Map();
void Unmap();
operator VkBuffer() const;
VkDeviceSize GetSize() const;
VkDeviceSize GetPosition(int index) const;
static void CopyBuffer(const Buffer& srcBuffer, const Buffer& dstBuffer, VkDeviceSize offset, VkDeviceSize size);
};
}