跳到主要内容

vkCreateDevice

函数原型

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;
}