I have a function created fpr the ApplicationInfo and the InstanceCreateInfo.
These function I call with that code:
VkApplicationInfo appInfo = createApplicationInfo(appName, engineName, 0, 0, 1);
VkInstanceCreateInfo instanceCreateInfo = createInstanceCreateInfo(appInfo);
The Instance I create with:
VkResult result = vkCreateInstance(&instanceCreateInfo, NULL, &instance);
Here the method which create the ApplicationInfo:
VkApplicationInfo Engine::createApplicationInfo(const char appName[], const char engineName[], short major, short minor, short patch)
{
VkApplicationInfo appInfo;
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pNext = NULL;
appInfo.pApplicationName = appName;
appInfo.applicationVersion = VK_MAKE_VERSION(static_cast<int>(major), static_cast<int>(minor), static_cast<int>(patch));
appInfo.pEngineName = engineName;
appInfo.engineVersion = VK_MAKE_VERSION(0, 0, 1);
appInfo.apiVersion = VK_API_VERSION_1_0;
return appInfo;
}
Here is the function for creating the InstanceCreateInfo, maybe this part of the code is more important.
VkInstanceCreateInfo Engine::createInstanceCreateInfo(VkApplicationInfo &appInfo)
{
VkInstanceCreateInfo instanceCreateInfo;
instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
instanceCreateInfo.pNext = NULL;
instanceCreateInfo.flags = 0;
instanceCreateInfo.pApplicationInfo = &appInfo;
//Extensions set for Instance
instanceCreateInfo.ppEnabledExtensionNames = NULL;
instanceCreateInfo.enabledExtensionCount = 0;
//Layer reading
uint32_t amountOfLayers = 0;
vkEnumerateInstanceLayerProperties(&amountOfLayers, NULL);
VkLayerProperties *layers = new VkLayerProperties[amountOfLayers];
vkEnumerateInstanceLayerProperties(&amountOfLayers, layers);
std::cout << "Amount of Layers: " << amountOfLayers << std::endl;
for (int i = 0; i < amountOfLayers; i++)
{
std::cout << std::endl;
std::cout << "Name: " << layers[i].layerName << std::endl;
std::cout << "Spec Version: " << layers[i].specVersion << std::endl;
std::cout << "Impl Version: " << layers[i].implementationVersion << std::endl;
std::cout << "Description: " << layers[i].description << std::endl;
}
//Layer übergeben
std::vector<const char*> enabledInstanceLayers;
enabledInstanceLayers.push_back("VK_LAYER_LUNARG_standard_validation");
instanceCreateInfo.enabledLayerCount = static_cast<uint32_t>(1);
instanceCreateInfo.ppEnabledLayerNames = &enabledInstanceLayers[0];
return instanceCreateInfo;
}
This is the complete code for creating an instance. The error happens at the line where I create the instance:
VkResult result = vkCreateInstance(&instanceCreateInfo, NULL, &instance);
I hope someone could help me how to fix the problem…