struct VkSurfaceFormatKHR 的格式和色彩空间不是有重复的信息吗?

问题描述 投票:0回答:1

最近在学习Vulkan,遇到一个很小的问题。

结构体VkSurfaceFormatKHR中有两个成员,一个是格式,另一个是颜色空间。然而,当我们将其格式设置为VK_FORMAT_B8G8R8A8_SRGB时,则意味着要呈现的图像位于sRGB空间中。为什么我们还需要设置它的色彩空间VK_COLORSPACE_SRGB_NONLINEAR_KHR

vulkan
1个回答
0
投票

严格来说,没有设置任何内容,您只是选择提供的格式之一。 ICD 将为您提供一组兼容的格式和色彩空间。

因此,给定的 GPU 可能支持

VK_FORMAT_B8G8R8A8_SRGB
以及 sRGB 传输函数 (
VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
) 和 scRGB 传输函数 (
VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
)。因此,GPU 将为应用程序提供这两个选项,并允许应用程序选择它喜欢的格式。但您无法告诉 GPU 使用您想要的任何格式或颜色空间,只能使用 GPU 支持的组合。

通常,应用程序永远不会直接设置

format
colorSpace
VkSurfaceFormatKHR
成员。相反,它只是复制
vkGetPhysicalDeviceSurfaceFormatsKHR
提供的格式。

© www.soinside.com 2019 - 2024. All rights reserved.