Vulkan Cookbook 第八章 5 指定管线细分状态

了解如何在图形管线中激活曲面细分着色器,包括创建VkPipelineTessellationStateCreateInfo实例,设置patch控制点数量,以及在应用程序中启用tessellationShader功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指定管线细分状态

译者注:示例代码点击此处

曲面细分着色器是可在图形管道中启用的可选附加可编程着色器阶段之一。 但是当我们想要激活它们时,还需要准备管线细分状态。

怎么做...

1.创建名为tessellation_state_create_info的VkPipelineTessellationStateCreateInfo类型变量。 使用以下命令初始化其成员:
    ·sType为VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
    ·pNext为nullptr
    ·flags为0
    ·patchControlPoints为形成patch(图像块)的控制点(顶点)的数量

这个怎么运作...

要在我们的应用程序中使用曲面细分着色器,我们需要在创建逻辑设备期间启用tessellationShader功能,需要为曲面细分控制和评估着色器编写源代码,需要为它们创建一个着色器模块(或两个), 还需要准备一个VkPipelineTessellationStateCreateInfo类型的变量表示的管线细分状态。

提示:曲面细分状态是可选的 - 我们只有想要在图形管线中使用曲面细分着色器时才需要指定它。

在曲面细分状态中,我们仅提供有关形成patch(图像块)的控制点(顶点)的数量的信息。 规范声明patch最多可包含32个顶点。

提示:patch中控制点(顶点)的最大支持数量必须至少为32。

patch只是点(顶点)的集合,这些点(顶点)被细分阶段用于生成典型的点、线或多边形(如三角形)。它可以和通常的多边形完全相同。作为一个例子,我们可以将形成三角形的顶点作为patches来绘制。这样的操作结果是正确的。但是对于patche,我们可以使用任何其他不寻常的顺序和顶点数量。这使我们在控制曲面细分引擎创建新顶点的方式方面具有更大的灵活性。

填充VkPipelineTessellationStateCreateInfo类型的变量,我们可以准备以下代码:

tessellation_state_create_info = { 
  VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, 
  nullptr, 
  0, 
  patch_control_points_count 
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值