前提・実現したいこと
Vulkanの論理デバイスVkDevice
をvkCreateDevice
で作成しようとしているのですがvkCreateDevice
で例外が飛びます.
C++, vectorにはあまり慣れないですがこれ以前の同様の処理vkCreateInstance
は作成できています.
VkDeviceCreateInfo::ppEnabledExtensionNames
が問題だとは思いますがうまく動作しません.
何が間違っていますでしょうか?
該当のソースコード
outline
vkEnumerateDeviceExtensionProperties
でVkExtensionProperties
を取得VkExtensionProperties
からextensionNameのpointerをリストvkCreateDevice
codes
C
1vector<VkExtensionProperties>dep; 2uint32_t DevExPropCount = 0; 3const char layerlist[] = { "VK_LAYER_KHRONOS_validation" }; 4vkEnumerateDeviceExtensionProperties(selectedPhysicalDevice, layerlist, &DevExPropCount, nullptr); 5dep.resize(DevExPropCount); 6vkEnumerateDeviceExtensionProperties(selectedPhysicalDevice, layerlist, &DevExPropCount, dep.data()); 7 8vector<const char*>lpdeplist(dep.size()); 9for (vector<const char*>::size_type i = 0; i < lpdeplist.size(); i++)lpdeplist[i] = dep[i].extensionName; 10 11VkDevice vkd = {}; 12const float prio = 1.0; 13VkDeviceQueueCreateInfo dqci = {VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, nullptr, 0, 1, graphicsqueue, &prio}; 14VkDeviceCreateInfo vkci = { VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, nullptr, VK_VERSION_1_0, 1, &dqci, 0, nullptr, lpdeplist.size(), lpdeplist.data(), nullptr }; 15 16VkResult res_cd = vkCreateDevice(selectedPhysicalDevice, &vkci, nullptr, &vkd);
selectedPhysicalDeviceは正常に初期化されています.
補足情報
Windows10 Pro
VisualStudio2019 Community
Vulkan SDK 1.1.121.2
回答1件
あなたの回答
tips
プレビュー