Files
RenderFramework/Src/RenderFramework/Vulkan/Generated/VulkanPP/Framebuffer.cpp
T
2025-09-10 04:09:26 +03:00

40 lines
1.8 KiB
C++

#include <VulkanPP/Framebuffer.hpp>
#include <VulkanPP/Device.hpp>
#include <VulkanPP/ImageView.hpp>
#include <VulkanPP/RenderPass.hpp>
namespace VulkanPP {
Framebuffer::Framebuffer(IntrusivePtr<Device> owner0, VkFramebuffer handle, bool owned, IntrusivePtr<RenderPass> owner_RenderPass, const std::vector<IntrusivePtr<ImageView>>& owners_ImageView)
: _handle(handle), _owned(owned)
, _owner0(std::move(owner0))
, _lifetime_owner_RenderPass(std::move(owner_RenderPass))
, _lifetime_owners_ImageView(owners_ImageView)
{ }
Framebuffer::~Framebuffer() {
if (_handle && _owned) {
(void)vk.vkDestroyFramebuffer(_owner0 ? _owner0->getHandle() : (VkDevice)VK_NULL_HANDLE, _handle, nullptr);
_handle = VK_NULL_HANDLE;
}
}
// Original: vkCreateFramebuffer
Framebuffer::Framebuffer(IntrusivePtr<Device> parent, const VkFramebufferCreateInfo* pCreateInfo, IntrusivePtr<RenderPass> owner_RenderPass, const std::vector<IntrusivePtr<ImageView>>& owners_ImageView) : _handle(VK_NULL_HANDLE), _owned(true)
, _owner0(parent)
, _lifetime_owner_RenderPass(owner_RenderPass)
, _lifetime_owners_ImageView(owners_ImageView)
{
VkFramebuffer _out = VK_NULL_HANDLE;
auto _res = vk.vkCreateFramebuffer(parent->getHandle(), pCreateInfo, nullptr, &_out);
if (_res != VK_SUCCESS) throw std::runtime_error("vkCreateFramebuffer failed");
_handle = _out;
}
// Original: vkCreateFramebuffer (factory)
IntrusivePtr<Framebuffer> Framebuffer::create(IntrusivePtr<Device> parent, const VkFramebufferCreateInfo* pCreateInfo, IntrusivePtr<RenderPass> owner_RenderPass, const std::vector<IntrusivePtr<ImageView>>& owners_ImageView) {
return IntrusivePtr<Framebuffer>(new Framebuffer(parent, pCreateInfo, owner_RenderPass, owners_ImageView));
}
} // namespace VulkanPP