/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* UniformBuffer.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:45:29 by maldavid #+# #+# */ /* Updated: 2024/04/23 14:23:56 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__