public static VkExtensionProperties[] GetAvailableInstanceExtensions(string layerName = null) { using (Utf8StringPointer pLayerName = layerName) { CheckResult(vkEnumerateInstanceExtensionProperties(pLayerName, out uint pCount, IntPtr.Zero)); VkExtensionProperties[] tmp = new VkExtensionProperties[pCount]; CheckResult(vkEnumerateInstanceExtensionProperties(pLayerName, out pCount, tmp.Pin())); tmp.Unpin(); return(tmp); } }
public static VkExtensionProperties[] InstanceExtensionProperties(string layerName = null) { VkExtensionProperties[] result; IntPtr pLayerName = Marshal.StringToHGlobalAnsi(layerName); UInt32 count; vkAPI.vkEnumerateInstanceExtensionProperties(pLayerName, &count, null).Check(); result = new VkExtensionProperties[count]; if (count > 0) { fixed(VkExtensionProperties *pointer = result) { vkAPI.vkEnumerateInstanceExtensionProperties(pLayerName, &count, pointer).Check(); } } Marshal.FreeHGlobal(pLayerName); return(result); }