#ifndef HYDRABUFFERMANAGER #define HYDRABUFFERMANAGER #include "../engine/HydraObject.h" #include "HydraBuffer.h" #include "HydraVertexBuffer.h" #include #include #include 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 m_available_buffer_ids; std::vector m_buffers; HydraID _GetBufferID(); uint32_t _DecodeBufferType(HYDRA_BUFFER_TYPE buffer_type); }; #endif /* HYDRABUFFERMANAGER */