Files
2026-07-17 15:30:29 +01:00

34 lines
1.1 KiB
C++

#ifndef HYDRABUFFERMANAGER
#define HYDRABUFFERMANAGER
#include "../engine/HydraObject.h"
#include "HydraBuffer.h"
#include "HydraVertexBuffer.h"
#include <queue>
#include <vector>
#include <mutex>
class HydraBufferManager : public HydraObject
{
public:
const uint32_t MAX_BUFFERS = 10000;
void Initialise();
void Shutdown();
HydraID CreateGPUBuffer(std::string buffer_name,
uint32_t buffer_size_bytes,
uint32_t binding,
HYDRA_BUFFER_TYPE buffer_type);
void DeleteBuffer(HydraID buffer_id);
void UpdatePartialBuffer(HydraID buffer_id, uint32_t start, uint32_t size, void *data);
void UpdateWholeBuffer(HydraID buffer_id, void* data);
HydraID FindBuffer(std::string buffer_name);
const HydraBuffer& GetBuffer(HydraID buffer_id);
private:
std::mutex m_mutex;
std::queue<HydraID> m_available_buffer_ids;
std::vector<HydraBuffer> m_buffers;
HydraID _GetBufferID();
uint32_t _DecodeBufferType(HYDRA_BUFFER_TYPE buffer_type);
};
#endif /* HYDRABUFFERMANAGER */