小编Fra*_*ann的帖子

为什么 vkCreateSwapchainKHR 会导致访问冲突为 0?

我正在尝试按照 vulkan-tutorial.com 的精彩教程学习 Vulkan,但在必须创建交换链时遇到了一些问题。如标题所述,vkCreateSwapchainKHR会产生以下错误:Access violation executing location 0x0000000000000000.

教程建议这可能与蒸汽覆盖层发生冲突。对我来说情况并非如此,因为从教程中复制了整个代码。

我试图找出我的代码出了什么问题,并学习如何调试此类问题,因为我将来不会有参考代码。有罪的线看起来是这样的:

if (vkCreateSwapchainKHR(device, &swapChainCreateInfo, nullptr, &swapChain) != VK_SUCCESS) {
    throw std::runtime_error("Could not create swap chain");
}
Run Code Online (Sandbox Code Playgroud)

我在这一行设置了一个断点,以将代码中的参数值与参考代码中的值进行比较。据我所知,没有区别。(当然地址不一样)

我应该在哪里查找代码中的问题?变量swapChainNULL预期的。一个错误的形成swapChainCreateInfo不应该使vkCreateSwapchainKHR崩溃。它只会让它返回一些不是的东西VK_SUCCESS。并且设备创建没有问题:

if (vkCreateDevice(physicalDevice, &createInfo, nullptr, &device) != VK_SUCCESS) {
    throw std::runtime_error("Failed to create logical device");
}
Run Code Online (Sandbox Code Playgroud)

编辑 - 我正在使用验证层VK_LAYER_LUNARG_standard_validation,我的createInfo设置如下。

// Useful functions and structures
VkPhysicalDevice physicalDevice;
VkSurfaceKHR surface;
VkSwapchainKHR swapChain;

struct QueueFamilyIndices {
    std::optional<uint32_t> graphicsFamily;
    std::optional<uint32_t> …
Run Code Online (Sandbox Code Playgroud)

c++ access-violation vulkan

9
推荐指数
1
解决办法
1976
查看次数

标签 统计

access-violation ×1

c++ ×1

vulkan ×1