vkGetPhysicalDeviceSurfaceFormatsKHR 中的 pSurfaceFormats 代表什么?
What does the pSurfaceFormats in vkGetPhysicalDeviceSurfaceFormatsKHR represent?
根据vkGetPhysicalDeviceSurfaceFormatsKHR,参数pSurfaceFormats
是指向VkSurfaceFormatKHR
结构数组的指针。如果 pSurfaceFormats
为 NULL,则给定表面支持的格式对数在 pSurfaceFormatCount
中 returned。支持的格式对数量将大于或等于 1。
我使用了 vkGetPhysicalDeviceSurfaceFormatsKHR
函数,其中 pSurfaceFormats
具有 NULL 值 return 一个名为 surface_formats
的数组。我使用 vulkan 完成了此操作,它是 Vulkan 的 python 包装器。
vkGetPhysicalDeviceSurfaceFormatsKHR = vkGetInstanceProcAddr(
instance, "vkGetPhysicalDeviceSurfaceFormatsKHR")
surface_formats = vkGetPhysicalDeviceSurfaceFormatsKHR (
physicalDevice = physical_device,
surface = surface )
for f in surface_formats:
print(' format = ', f )
print(' format.format = ', f.format )
print(' format.colorSpace = ', f.colorSpace )
下面是数组的打印输出 surface_formats
:
format = <cdata 'struct VkSurfaceFormatKHR &' 0x1a76f60>
format.format = 44
format.colorSpace = 0
format = <cdata 'struct VkSurfaceFormatKHR &' 0x1a76f68>
format.format = 50
format.colorSpace = 0
我的问题:
为什么 surface_formats
数组有两个索引,而不是只有 1 个索引或多个索引,如 3、4、5、...?指数的数量与什么有关?例如,是否与我的物理设备中VkQueueFamilyProperties
的索引数有关?
VkColorSpaceKHR
(即f.colorSpace)仅return一个结果还是下面列出的允许值的一些可能结果?例如。可以 return VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
和 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
而不仅仅是 VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
吗?
typedef 枚举 VkColorSpaceKHR {
VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
} VkColorSpaceKHR
格式描述了颜色通道如何编码到内存中,这包括每个通道有多少位。
颜色space 描述了从编码颜色到实际线性 sRGB 颜色的映射 space,您希望颜色用于基于物理的东西。
这不是一组标志,而是一个值,如果一种格式支持多种颜色 space,那么数组中的每一对都需要一个单独的值。
根据vkGetPhysicalDeviceSurfaceFormatsKHR,参数pSurfaceFormats
是指向VkSurfaceFormatKHR
结构数组的指针。如果 pSurfaceFormats
为 NULL,则给定表面支持的格式对数在 pSurfaceFormatCount
中 returned。支持的格式对数量将大于或等于 1。
我使用了 vkGetPhysicalDeviceSurfaceFormatsKHR
函数,其中 pSurfaceFormats
具有 NULL 值 return 一个名为 surface_formats
的数组。我使用 vulkan 完成了此操作,它是 Vulkan 的 python 包装器。
vkGetPhysicalDeviceSurfaceFormatsKHR = vkGetInstanceProcAddr(
instance, "vkGetPhysicalDeviceSurfaceFormatsKHR")
surface_formats = vkGetPhysicalDeviceSurfaceFormatsKHR (
physicalDevice = physical_device,
surface = surface )
for f in surface_formats:
print(' format = ', f )
print(' format.format = ', f.format )
print(' format.colorSpace = ', f.colorSpace )
下面是数组的打印输出 surface_formats
:
format = <cdata 'struct VkSurfaceFormatKHR &' 0x1a76f60>
format.format = 44
format.colorSpace = 0
format = <cdata 'struct VkSurfaceFormatKHR &' 0x1a76f68>
format.format = 50
format.colorSpace = 0
我的问题:
为什么
surface_formats
数组有两个索引,而不是只有 1 个索引或多个索引,如 3、4、5、...?指数的数量与什么有关?例如,是否与我的物理设备中VkQueueFamilyProperties
的索引数有关?VkColorSpaceKHR
(即f.colorSpace)仅return一个结果还是下面列出的允许值的一些可能结果?例如。可以 returnVK_COLOR_SPACE_SRGB_NONLINEAR_KHR
和VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
而不仅仅是VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
吗?typedef 枚举 VkColorSpaceKHR { VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003, VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007, VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008, VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009, VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010, VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011, VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012, VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013, } VkColorSpaceKHR
格式描述了颜色通道如何编码到内存中,这包括每个通道有多少位。
颜色space 描述了从编码颜色到实际线性 sRGB 颜色的映射 space,您希望颜色用于基于物理的东西。
这不是一组标志,而是一个值,如果一种格式支持多种颜色 space,那么数组中的每一对都需要一个单独的值。