34 lines
1.1 KiB
C++
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 */
|