Vulkan选择交换链图像的尺寸

选择交换链图像的尺寸
通常,为交换链创建的图像应该刚好能够放入应用程序的窗口。显示曲面提供了设置图像尺寸的功能,但是某些操作系统使用图像的尺寸定义窗口的尺寸。我们应该牢记这一点,并查明适合应用于交换链图像的尺寸。

具体处理过程
(1)获取显示曲面的功能(请参阅“获取显示曲面的功能”小节)。将这些数据存储在一个VkSurfaceCapabilitiesKHR类型的变量中,将该变量命名为surface_capabilities。
(2)创建一个VkExtent2D类型的变量,将其命名为size_of_images,该变量用于存储我们想要的交换链图像尺寸。
(3)查明surface_capabilities变量中currentExtent.width成员的值是否等于0xFFFFFFFF(通过将-1转换成无符号uint32_t类型的值)。如果currentExtent.width成员的值等于0xFFFFFFFF,就意味着图像的尺寸决定窗口的尺寸。在这种情况下:

  • 将想要使用的图像宽度和高度,赋予size_of_images变量中的width和height成员。
  • 调整size_of_images变量中width成员的值,使其小于surface_capabilities.maxImage Extent.width,并且大于surface_capabilities.minImageExtent.width。
  • 调整size_of_images变量中height成员的值,使其小于surface_capabilities.maxImage Extent.height,并且大于surface_capabilities.minImageExtent.height。
    (4)如果surface_capabilities变量中currentExtent.width成员的值不等于0xFFFFFFFF,就应将surface_capabilities.currentExtent成员的值赋予size_of_images变量。

具体运行情况
交换链图像的尺寸必须位于显示曲面支持的限定范围内,这些尺寸是通过显示曲面的功能定义的。在最典型的场景中,需要渲染与应用程序窗口工作区尺寸相同的图像。使用曲面功能中的currentExtent成员可以设置交换链图像的尺寸。
在某些操作系统中,窗口的尺寸是由交换链图像的尺寸决定的。这种情况由显示曲面功能中currentExtent.width或currentExtent.height成员的0xFFFFFFFF值标识。在这种情况下,我们可以定义图像的尺寸,但必须使之不超出指定的范围。

Vulkan选择交换链图像的尺寸

Vulkan选择交换链图像的尺寸

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

Vulkan实战