gpt4 book ai didi

c++ - 如何正确清洁Vulkan对象?

转载 作者:行者123 更新时间:2023-12-03 07:09:13 25 4
gpt4 key购买 nike

VkObjects是否需要为空,还是以某种方式自动解决?

  • 例如,当我有Buffert类作为
  • 的包装器时
    VkBuffer _buffer;
    和这样的析构函数:
    Buffer::~Buffer()
    {
    vkDestroyBuffer(_device.getLogicalDevice(), _buffer, nullptr);
    if(_memory) {
    vkFreeMemory(_device.getLogicalDevice(), _memory, nullptr);
    }
    }
    调用析构函数后,是否需要将_buffer设置为 VK_NULL_HANDLE nullptr ,还是没有必要,并且这是自动完成的?
    (基本上,我的问题是,在调用vkDestroyXYZ / vkFreeXYZ之后,规范是否处于对象实例处于哪种状态)
    如果是的话,它适用于所有VkObject(例如 VkInstanceVkImage等),还是有一些异常(exception)?
    我以为我可以保留原样(尤其是在它立即销毁后),还可以,但是我们在代码审查期间进入了讨论,可以说,我的审查员已为该对象设置了-pedantic和-Wall。为了我们的代码库,我必须承认:)

    最佳答案

    当您(正确)销毁了Vulkan对象时,该对象也将被销毁。到此为止。这与通过其指针销毁C++中的对象没有什么不同:指向的对象已消失。
    指针值本身的操作由您自己决定(除了将其值作为输入传递给Vulkan API外,您当然不能这样做)。

    关于c++ - 如何正确清洁Vulkan对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64916896/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com