Vulkan Cookbook 第八章 图形和计算管线

图形和计算管线

在本章中,我们将介绍以下内容:
创建着色器模块
指定管线着色器阶段
指定管线顶点绑定描述,属性描述和输入状态
指定管线输入程序集状态
指定管线细分状态
指定管线视口和剪刀测试状态
指定管线光栅化状态
指定管线多重采样状态
指定管线深度和模板状态
指定管线混合状态
指定管线动态状态
创建管线布局
指定图形管线创建参数
创建管线缓存对象
从管线缓存中检索数据
合并多个管线缓存对象
创建图形管线
创建计算管线
绑定管线对象
使用组合图像采样器,缓冲区和推送常量范围创建管线布局
使用顶点和片段着色器创建图形管线,启用深度测试,并使用动态
视口和剪刀测试
在多个线程上创建多个图形管线
销毁管线
销毁管线缓存
破坏管线布局
销毁着色器模块

介绍

记录在命令缓冲区中并提交给队列的操作由硬件处理。 处理在形成管线的一系列步骤中执行。 当我们想要执行数学计算时,我们使用计算管线。 如果我们想绘制任何东西,我们需要一个图形。

管道对象控制绘制几何图形或执行计算的方式。 它们管理执行应用程序的硬件的行为。 它们是Vulkan和OpenGL之间最大和最明显的差异之一。 OpenGL使用状态机。 它允许我们随时改变许多渲染或计算参数。 我们可以设置状态,激活着色器程序,绘制几何体,然后激活另一个着色器程序并绘制另一个几何体。 在Vulkan中,这是不可能的,因为整个渲染或计算状态存储在单个整体对象中。 当我们想要使用一组不同的着色器时,我们需要准备并使用一个单独的管线。 不能只是切换着色器。

这可能最初是令人生畏的,因为许多着色器变体(不包括管线状态的其余部分)导致我们创建多个管道对象。 但它有两个重要目标。 首先是表现。 事先知道整个状态的驱动程序可以优化以下操作的执行。 第二个目标是性能的稳定性。 每当我们想要改变状态可能会导致驱动程序在意外和不可预测的时刻执行其他操作,例如着色器重新编译。 在Vulkan中,所有必需的准备工作(包括着色器编译)仅在管线创建期间完成。

在本章中,我们将了解如何设置所有图形或计算管线参数以成功创建它们。 我们将看到如何准备着色器模块并定义哪些着色器阶段处于活动状态,如何设置深度或模板测试以及如何启用混合。 我们还将指定在绘制操作期间使用的顶点属性以及它们的提供方式。 最后,我们将了解如何创建多个管线以及如何提高其创建速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值