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

34 lines
1.4 KiB
C++

#include <VulkanPP/AccelerationStructureNV.hpp>
#include <VulkanPP/Device.hpp>
namespace VulkanPP {
AccelerationStructureNV::AccelerationStructureNV(IntrusivePtr<Device> owner0, VkAccelerationStructureNV handle, bool owned)
: _handle(handle), _owned(owned)
, _owner0(std::move(owner0))
{ }
AccelerationStructureNV::~AccelerationStructureNV() {
if (_handle && _owned) {
(void)vk.vkDestroyAccelerationStructureNV(_owner0 ? _owner0->getHandle() : (VkDevice)VK_NULL_HANDLE, _handle, nullptr);
_handle = VK_NULL_HANDLE;
}
}
// Original: vkCreateAccelerationStructureNV
AccelerationStructureNV::AccelerationStructureNV(IntrusivePtr<Device> parent, const VkAccelerationStructureCreateInfoNV* pCreateInfo) : _handle(VK_NULL_HANDLE), _owned(true)
, _owner0(parent)
{
VkAccelerationStructureNV _out = VK_NULL_HANDLE;
auto _res = vk.vkCreateAccelerationStructureNV(parent->getHandle(), pCreateInfo, nullptr, &_out);
if (_res != VK_SUCCESS) throw std::runtime_error("vkCreateAccelerationStructureNV failed");
_handle = _out;
}
// Original: vkCreateAccelerationStructureNV (factory)
IntrusivePtr<AccelerationStructureNV> AccelerationStructureNV::create(IntrusivePtr<Device> parent, const VkAccelerationStructureCreateInfoNV* pCreateInfo) {
return IntrusivePtr<AccelerationStructureNV>(new AccelerationStructureNV(parent, pCreateInfo));
}
} // namespace VulkanPP