1. 程式人生 > >Vulkan Cookbook 第二章 6 獲得演示表面的功能

Vulkan Cookbook 第二章 6 獲得演示表面的功能

獲得演示表面的功能

當我們建立交換鏈時,需要指定建立引數。 必須提供符合支援限制的值, 但我們並不清楚這些值。它們可以從演示表面獲得。 因此,為了正確建立交換鏈,我們需要獲取表面的功能。

怎麼做...

1.使用vkEnumeratePhysicalDevices()函式獲取所有列舉的物理裝置控制代碼,並將其儲存在名為physical_deviceVkPhysicalDevice型別的變臉中。 2.獲取建立的演示表面控制代碼。將其儲存在名為presentation_surfaceVkSurfaceKHR型別的變臉中。 3.建立名為surface_capabilitiesVkSurfaceCapabilitiesKHR

型別變數。 4.呼叫vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physical_device,presentation_surface,&surface_capabilities),第一個引數提供物理裝置,第二個引數傳入演示表面的控制代碼,第三個引數指向surface_capabilities的變數。 5.如果函式呼叫成功,則surface_capabilities變數將包含可用於建立交換連的演示表面引數,限制和功能。

這個怎麼運作...

獲取在建立交換鏈期間可以使用的功能和引數範圍非常簡單:

VkResult result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR( physical_device, presentation_surface, &surface_capabilities)

if( VK_SUCCESS != result ) {
  std::cout << "Could not get the capabilities of a presentation surface." << std::endl; 
  return false;
}

return true;

我們只調用一個vkGetPhysicalDeviceSurfaceCapabilitiesKHR()函式,該函式講引數儲存在VkSurfaceCapabilitiesKHR型別變數中。它包含以下引數成員的結構: ·交換影象的最小和最大准許數量。 ·演示表面的最小,最大和當前範圍。 ·支援的影象轉換(可在演示之前應用)和當前使用的轉換。 ·支援的影象層的最大數量。 ·支援的用法。 ·表面alpha值支援的合成列表(影象的alpha組建應如何影響應用程式的視窗桌面組合)。