public static void UseLayers(ref VkInstanceCreateInfo Inf) { if (!EnableDebug) return; Inf.enabledLayerCount = LayerCount; Inf.ppEnabledLayerNames = LayerNames; }
public virtual IntPtr CreateVulkanInstance(string AppShortName = "VulkanApp") { byte* APP_SHORT_NAME = AppShortName.AllocString(); VkApplicationInfo AppInfo = new VkApplicationInfo(); AppInfo.sType = VkStructureType.VK_STRUCTURE_TYPE_APPLICATION_INFO; AppInfo.pNext = null; AppInfo.pApplicationName = APP_SHORT_NAME; AppInfo.applicationVersion = 1; AppInfo.pEngineName = APP_SHORT_NAME; AppInfo.engineVersion = 1; AppInfo.apiVersion = Vulkan.VK_API_VERSION_ANY; VkInstanceCreateInfo Inf = new VkInstanceCreateInfo(); Inf.sType = VkStructureType.VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; Inf.flags = 0; Inf.pNext = null; Inf.pApplicationInfo = &AppInfo; Inf.enabledLayerCount = 0; Inf.ppEnabledLayerNames = null; VkDebug.UseLayers(ref Inf); Inf.enabledExtensionCount = (uint)EnabledExtensions.Count; Inf.ppEnabledExtensionNames = null; byte*[] EnabledExtensionsArray = new byte*[Inf.enabledExtensionCount]; for (int i = 0; i < EnabledExtensionsArray.Length; i++) EnabledExtensionsArray[i] = EnabledExtensions[i].AllocString(); fixed (byte** EnabledExtensionsArrayPtr = EnabledExtensionsArray) { if (Inf.enabledExtensionCount != 0) Inf.ppEnabledExtensionNames = EnabledExtensionsArrayPtr; IntPtr VkInst = IntPtr.Zero; Vulkan.vkCreateInstance(&Inf, IntPtr.Zero, &VkInst).Throw(); VkInstance = VkInst; } for (int i = 0; i < EnabledExtensionsArray.Length; i++) Utils.FreeString(EnabledExtensionsArray[i]); Utils.FreeString(APP_SHORT_NAME); VkDebug.Setup(VkInstance); return VkInstance; }