我尝试在计算着色器中使用深度纹理。
使用format VK_FORMAT_D32_SFLOAT和usage VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_STORAGE_BIT创建depth纹理。
问题是似乎不支持这种参数组合,我有一个警告:vkCreateImageView(): pCreateInfo->format VK_FORMAT_D32_SFLOAT with tiling VK_IMAGE_TILING_OPTIMAL does not support usage that includes VK_IMAGE_USAGE_STORAGE_BIT。
除此消息外,程序运行正常,计算着色器已成功读取深度纹理。
是否可以在计算着色器中读取深度纹理?
发布于 2020-02-11 22:23:49
是的,可以在计算着色器中读取32位规格化深度图像。只是不在你的实现中。
Vulkan允许实现拒绝图像格式和使用的某些组合。他们可以完全拒绝某些格式,而将其他格式限制为仅用于特定用途。因此,除非您打算使用的format+usage组合在Vulkan规范的所需功能列表中,否则您必须查询对它的支持。
Vulkan不要求实现允许您使用D32镜像作为存储镜像。因此,您必须检查特定的实现是否提供了此功能。
https://stackoverflow.com/questions/60166722
复制相似问题