/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* UniformBuffer.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:45:29 by maldavid #+# #+# */ /* Updated: 2024/07/05 13:39:32 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_UBO__ #define __MLX_VK_UBO__ #include namespace mlx { class UniformBuffer { public: UniformBuffer() = default; void Create(NonOwningPtr renderer, std::uint32_t size, const char* name); void Destroy() noexcept; void SetData(std::uint32_t size, const void* data); VkDeviceSize GetSize() noexcept; VkDeviceSize GetOffset() noexcept; VkDeviceMemory GetDeviceMemory() noexcept; VkBuffer& operator()() noexcept; VkBuffer& Get() noexcept; inline VkDeviceSize GetSize(int i) noexcept { return m_buffers[i].GetSize(); } inline VkDeviceSize GetOffset(int i) noexcept { return m_buffers[i].GetOffset(); } inline VkBuffer& operator()(int i) noexcept { return m_buffers[i].Get(); } inline VkBuffer& Get(int i) noexcept { return m_buffers[i].Get(); } ~UniformBuffer() = default; private: std::array m_buffers; std::array m_maps; NonOwningPtr p_renderer; }; } #endif // __MLX_VK_UBO__