c++ - 在计算着色器中使用深度纹理
问题描述
我正在尝试在计算着色器中使用深度纹理。
深度纹理是使用格式VK_FORMAT_D32_SFLOAT
和用法创建的VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_STORAGE_BIT
。
问题是似乎不支持这种参数组合,我有这个警告:vkCreateImageView(): pCreateInfo->format VK_FORMAT_D32_SFLOAT with tiling VK_IMAGE_TILING_OPTIMAL does not support usage that includes VK_IMAGE_USAGE_STORAGE_BIT
。
除此消息外,程序运行良好,计算着色器成功读取深度纹理。
这可以在计算着色器中读取深度纹理吗?
解决方案
是的,可以在计算着色器中读取 32 位标准化深度图像。只是不在您的实施中。
Vulkan 允许实现拒绝某些图像格式和用法的组合。他们可以完全拒绝某些格式,同时将其他格式限制为仅用于特定用途。因此,除非您打算使用的格式+用法组合在 Vulkan 规范的所需功能列表中,否则您必须查询对它的支持。
Vulkan 不要求实现允许您将D32
图像用作存储图像。因此,您必须检查特定实现是否提供此功能。
推荐阅读
- swift - 如果你有一个用户 B 的 uid 作为 uid A 下的孩子的值,你如何在写安全规则中检查 B 的值?
- python - 3D数组的Python相关系数
- python - 如何根据 param1 < 0.5*param2 的另一个参数绑定 lmfit 参数
- excel - 当另一个单元格中的值更改时,如何自动将公式放入单元格中?
- python - NoModuleFoundError:没有名为“分布式”的模块
- python - 在特定位置将值插入/附加到熊猫列而不替换现有值
- java - Spring Boot休眠类型异常创建带有JSON字段的表
- android - 在针对 Android 10/11 并使用 Scoped Storage(或不使用!)时,在文件系统的任何位置添加应用内文件快捷方式
- swift - 需要帮助使 NavigationLink 在 SwiftUI 中工作
- azure - Docker Https 与 Azure Key Vault 使用 DevOps 发布管道