使用计算着色器渲染到交换链
Render to swap chain using compute shader
我正在尝试使用计算着色器直接渲染到交换链。
为此,我需要使用用法创建swapchain
VK_IMAGE_USAGE_STORAGE_BIT
。
问题是swapchain
需要使用格式VK_FORMAT_B8G8R8A8_UNORM
或VK_FORMAT_B8G8R8A8_SRGB
创建,并且 2 个都不允许与我使用的物理设备VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
格式功能。
我说错了什么,或者无法使用我的配置使用计算着色器渲染到swapchain
?
Vulkan 对实现没有要求,它允许在计算着色器操作中直接使用交换链图像(仅供参考:"渲染"通常是指非常具体的操作;它不会在计算着色器中发生(。因此,该实现完全有可能禁止您通过各种方式在 CS 中使用交换链映像。
如果无法以首选格式创建交换链映像,则下一个最佳选择是查看是否可以为可用作存储映像的格式的映像视图找到兼容的格式。但是,这要求实现支持 KHR 扩展swapchain_mutable_format,并且交换链的创建标志必须包括VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
以及要为其创建视图的格式的VkImageFormatListCreateInfoKHR
列表。
此外,在提供支持的情况下,这意味着您的 CS 将不得不交换数据的顺序。并且不要忘记,当您创建交换链时,您必须询问它是否可以将其映像用作存储映像(imageUsage
(。它可能直接禁止这样做。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 使用计算着色器渲染到交换链
- 通过比较数组中的相邻元素来计算交换次数
- 如何重载加法运算符以进行交换计算
- 在不进行冒泡排序的情况下,计算数组中冒泡排序交换的次数
- 如何计算冒泡排序中的交换