动态线光栅化
此示例的源代码可以在 Khronos Vulkan 示例 github 仓库中找到。 |

概述
此示例演示了与动态线光栅化相关的各种扩展中的函数。这些函数对于开发 CAD 应用程序非常有用。
-
来自
VK_EXT_line_rasterization
扩展-
vkCmdSetLineStippleEXT
- 设置虚线模式。
-
-
来自
VK_EXT_extended_dynamic_state3
扩展-
vkCmdSetPolygonModeEXT
- 设置如何光栅化定义的图元。 -
vkCmdSetLineRasterizationModeEXT
- 设置线光栅化的算法。 -
vkCmdSetLineStippleEnableEXT
- 切换线的虚线效果。
-
-
以及来自核心 Vulkan
-
vkCmdSetLineWidth
- 设置线宽。 -
vkCmdSetPrimitiveTopologyEXT
- 定义正在绘制的图元类型。
-
示例
动态线光栅化包含一个线框立方体,其外观可以由用户修改。立方体边缘和填充在单个管线中渲染,使用不同的索引集。vkCmdSetPrimitiveTopologyEXT
和 vkCmdSetPolygonModeEXT
函数用于更改它们的渲染方式。
用户可以修改线宽 (vkCmdSetLineWidth
) 并选择线的绘制方式 (vkCmdSetLineRasterizationModeEXT
)。该示例还演示了虚线化线的能力。虚线由两个变量定义
-
lineStipplePattern
- 一个uint16_t
,其中每个位表示线上某点是否着色 (1) 或透明 (0)。 -
lineStippleFactor
- 一个用于确定单个模式位影响多少个连续点的因子。
该示例还包含一个使用不同管线在立方体下方渲染的网格。此网格表示基于片段着色器的另一种线光栅化方法。因此,网格线的外观无法由用户修改。
致谢
无限网格着色器基于 asliceofrendering.com 博客中的代码。