跳转至

vkCreateDevice

函数原型

1
2
3
4
5
VkResult vkCreateDevice(
    VkPhysicalDevice                            physicalDevice,
    const VkDeviceCreateInfo*                   pCreateInfo,
    const VkAllocationCallbacks*                pAllocator,
    VkDevice*                                   pDevice);

描述

创建逻辑设备,逻辑设备可以看成是一个物理设备的连接。

参数

  • physicalDevice : 必须是调用vkEnumeratePhysicalDevices返回的一个物理设备句柄。
  • pCreateInfo : VkDeviceCreateInfo 结构体指针,包含创建逻辑device的信息。
  • pAllocator : host memory 分配器。
  • pDevice : 创建返回的 VkDevice 句柄。

返回值

  • VK_SUCCESS : 成功创建 VkDevice
  • 其他 : 创建失败。

代码示例

VkDevice CreateDevice()
{
    VkDevice device = VK_NULL_HANDLE;
    VkDeviceQueueCreateInfo queueCreateInfo = {};
    queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
    queueCreateInfo.queueFamilyIndex = 0;
    queueCreateInfo.queueCount = 1;
    const float defaultQueuePriority = 0.0f;
    queueCreateInfo.pQueuePriorities = &defaultQueuePriority;

    VkDeviceCreateInfo deviceCreateInfo = {};
    deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
    deviceCreateInfo.queueCreateInfoCount = 1;
    deviceCreateInfo.pQueueCreateInfos = &queueCreateInfo;

    VkPhysicalDevice physicalDevice = GetPhysicalDevices(0);
    vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &device);

    return device;
}