카테고리 없음

Reference counter

newpolaris 2020. 5. 10. 22:39
void VulkanDriver::destroyVertexBuffer(Handle<HwVertexBuffer> vbh) {
    if (vbh) {
        auto vertexBuffer = handle_cast<VulkanVertexBuffer>(mHandleMap, vbh);
        mDisposer.removeReference(vertexBuffer);
    }
}

단순

void VulkanDisposer::removeReference(Key resource) noexcept {
    assert(mDisposables[resource].refcount > 0);
    if (--mDisposables[resource].refcount == 0) {
        mGraveyard.emplace_back(std::move(mDisposables[resource]));
        mDisposables.erase(resource);
    }
}