예제 #1
0
파일: Utils.cs 프로젝트: jpbruyere/vk.net
 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);
     }
 }
예제 #2
0
        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);
        }