[英]How to properly clean Vulkan objects?
VkObjects 需要清零,還是以某種方式自動解決?
VkBuffer _buffer;
和這樣的析構函數:
Buffer::~Buffer()
{
vkDestroyBuffer(_device.getLogicalDevice(), _buffer, nullptr);
if(_memory) {
vkFreeMemory(_device.getLogicalDevice(), _memory, nullptr);
}
}
在調用析構函數后,我是否需要將 _buffer 設置為VK_NULL_HANDLE或nullptr或者它不是必需的,這是以自動方式完成的?
(基本上我的問題是,在調用 vkDestroyXYZ / vkFreeXYZ 后,規范是否處於哪個狀態離開對象實例)
如果是,它適用於所有 VkObjects(如VkInstance
、 VkImage
等)還是有一些例外?
我認為如果我將對象保持原樣(尤其是當它被立即銷毀時),我認為我很好,但是我們在代碼審查期間進行了這個討論,可以說,我的審查者已經設置了 -pedantic 和 -Wall為了我們的代碼庫,我必須承認:)
當您(正確)銷毀了一個 Vulkan 對象時,它就會被銷毀。 就這樣結束了。 這與在 C++ 中通過指針銷毀對象沒有什么不同:被指向的對象消失了。
您如何處理指針值本身取決於您(除了將其值作為輸入傳遞給 Vulkan API 之外,您當然不能這樣做)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.