如何解决从 VkImageCreateInfo 计算 VkImageAspectFlagsBits?
在 Vulkan 规范的附录 H 中,它说:
方面(图像):
一幅图像可能包含每个像素的多种或多个方面的数据,其中每个方面都是 管道以特定方式使用,并且可能与其他存储方式不同或分开存储 方面。例如,图像格式的颜色成分构成了图像的颜色方面。 图像,并可用作帧缓冲区颜色附件。一些操作,比如深度测试, 仅对图像的特定方面进行操作。其他操作,如图像/缓冲区副本,仅 一次只对一个方面进行操作。
此外还有 VkImageAspectFlagBits
类型,它(我认为)列出了图像可能具有的 7 个方面:
VK_IMAGE_ASPECT_COLOR_BIT
VK_IMAGE_ASPECT_DEPTH_BIT
VK_IMAGE_ASPECT_STENCIL_BIT
VK_IMAGE_ASPECT_MetaDATA_BIT
VK_IMAGE_ASPECT_PLANE_0_BIT
VK_IMAGE_ASPECT_PLANE_1_BIT
VK_IMAGE_ASPECT_PLANE_2_BIT
VkImageCreateInfo
没有方面字段。
如果我理解正确,给定的 VkImage
包含这 7 个方面的一个子集,对吗?
有没有办法从 VkImage 的 VkImageCreateInfo
推断出 7 个方面中的哪一个?
VkImageAspectFlagsBits GetimageAspects(const VkImageCreateInfo& info) { ??? }
解决方法
您主要可以从图像的格式中推导出图像的哪些方面:
-
VK_IMAGE_ASPECT_COLOR_BIT
指格式中可用的所有 R、G、B 和/或 A 组件。 -
VK_IMAGE_ASPECT_DEPTH_BIT
指的是 D 组件。 -
VK_IMAGE_ASPECT_STENCIL_BIT
指的是 S 组件。 -
VK_IMAGE_ASPECT_PLANE_n_BIT
指的是多平面格式的平面,即名称中带有2PLANE
或3PLANE
的平面。这些方面主要用于复制命令,但也可用于创建单个平面而不是整个图像的VkImageView
。 -
VK_IMAGE_ASPECT_METADATA_BIT
是奇怪的,其存在不是基于格式。相反,具有稀疏驻留 (VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
) 的图像具有元数据方面。
如果图像没有与方面对应的组件或标志,则它不具有该方面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。