Vulkan Programming Guide 第一章(1)

本文档是Vulkan编程指南的第一章,主要介绍Vulkan的基础知识,包括Vulkan实例、物理设备和队列的概念。Vulkan实例作为应用程序的子系统,管理设备的状态。物理设备表示硬件资源,每个设备有多个队列执行任务。本章还涵盖了创建Vulkan实例的步骤,并展示了如何查询和使用物理设备。
摘要由CSDN通过智能技术生成

这里写图片描述
内容
图片说明
表格说明
程序片段清单
关于本书
关于示例代码
错误纠正
致谢
关于作者


第一章 Vulkan概述
1.1 介绍
1.2 实例,设备和队列
1.2.1 Vulkan实例
1.2.2 Vulkan物理设备
1.2.3 物理设备内存
1.2.4 设备队列
1.2.5 创建逻辑设备
1.3 对象类型和函数约定
1.4 管理内存
1.5 Vulkan的多线程
1.6 数学概念
1.6.1 向量和矩阵
1.6.2 坐标系
1.7 Vulkan增强机制
1.7.1 图层
1.7.2 扩展
1.8 关闭清理程序
本章总结

第二章 内存和资源
2.1 主机内存管理
2.2 资源
2.2.1 缓冲流
2.2.2 格式和支持
2.2.3 图片
2.2.4 资源视图
2.2.5 销毁资源
2.3 设备内存管理
2.3.1 分配设备内存
2.3.2 主机访问设备内存
2.3.3 为资源绑定内存
2.3.4 稀疏资源
本章总结

第三章 队列和命令
3.1 设备队列
3.2 创建命令缓冲区
3.3 记录存储命令
3.4 回收命令缓冲区
3.5 提交命令
本章总结

第四章 数据操作
4.1 管理资源状态
4.1.1 管道障碍
4.1.2 全局内存障碍
4.1.3 缓冲区内存障碍
4.1.4 图像内存障碍
4.2 清除和填充缓存流
4.3 清除和填充图像
4.4 复制图像数据
4.5 复制压缩的图像数据
4.6 拉伸图像
本章总结

第五章 呈现
5.1 呈现扩展
5.2 呈现表面
5.1.1 在Microsoft Windows上的呈现
5.1.2 基于Xlib的平台呈现
5.1.3 用Xcb呈现
5.3 交换链
5.4 全屏表面
5.5 实现呈现
5.6 清理程序
本章总结

第六章 着色器和管道
6.1 GLSL概述
6.2 SPIR-V概述
6.2.1 SPIR-V的表示
6.2.2 将SPIR-V送到Vulkan
6.3 管道
6.3.1 计算管道
6.3.2 创建管道
6.3.3 专业常数
6.3.4 加速管道创建
6.3.5 绑定管道
6.4 执行工作
6.5 着色器中的资源访问
6.5.1 描述符集
6.5.2 将资源绑定到描述符集
6.5.3 绑定描述符集
6.5.4 统一,纹理单元和存储缓冲区
6.5.5 推送常量
6.5.6 抽样图像
本章总结

第七章 图形管道
7.1 逻辑图形管道
7.2 Renderpasses
7.3 帧缓冲
7.4 创建简单的图形管道
7.4.1 图形着色阶段
7.4.2 顶点输入状态
7.4.3 输入装配
7.4.4 镶嵌状态
7.4.5 视口状态
7.4.6 栅格化状态
7.4.7 多重采样状态
7.4.8 深度和钢板状态
7.4.9 颜色混合状态
7.5 动态状态
本章总结

第八章 绘图
8.1 准备绘制
8.2 顶点数据
8.3 索引绘制
8.4 仅索引渲染
8.5 重置索引
8.6 实例化
8.7 间接绘制
本章总结

第九章 几何处理
9.1 细分
9.1.1 细分配置
9.1.2 细分变量
9.1.3 细分示例:置换映射
9.2 几何着色器
9.2.1 切割原始数据
9.2.2 几何着色器实例化
9.3 可编程点大小
9.4 线宽和栅格化
9.5 用户剪切和拣选
9.6 视口转换

本章总结
第十章 片段处理
10.1 剪刀测试
10.2 深度操作和模板操作
10.2.1 深度测试
10.2.2 模板测试
10.2.3 早期片段测试
10.3 多重采样渲染
10.3.1 采样率阴影
10.3.2 多重采样解析
10.4 逻辑运算
10.5 片段着色器输出
10.6 颜色混合
本章总结

第十一章 同步
11.1 围栏
11.2 事件
11.3 信号量

第十二章 获取数据
12.1 查询
12.1.1 执行查询
12.1.2 时序查询
12.2 通过主机读取数据
本章总结

第十三章 多线渲染
13.1 输入附件
13.2 附件内容
13.2.1 附件初始化
13.2.2 渲染区域
13.2.3 保留附件内容
13.3 辅助命令缓冲区
本章总结
附录:Vulkan函数
词汇表
索引



图示1.1 Vulkan中实例,设备和队列的层次结构
图示2.1 Mipmap图片布局
图示2.2 线性平铺图片的内存布局
图示2.4 立体贴图的构造
图示2.5 主机与设备内存
图示4.1 存储在缓冲区中的图像的数据布局
图示6.1 描述符集与管道集
图示6.2 线性采样
图示6.3 不同采样模式的效果
图示7.1 完整的Vulken图形管道
图示 7.2 带状(左)与扇形(右)拓扑
图示 7.3 带有邻接拓扑的三角形
图示 7.4 带有邻接拓扑的三角带
图示8.1 索引数据流
图示8.2 不同索引模式对三角形带的影响
图示 8.3 多个立方体示例
图示 9.1 四边形细分
图示 9.2 三角形细分
图示 9.3 等值线细分
图示 9.4 细分空间模式
图示 9.5 细分位移映射的结果
图示9.6 严格化直线的光栅化
图示9.7 非严格化直线的光栅化
图示9.8 靠近视图的图形裁剪
图示10.1 标准采样位置
图示13.1 一个简单的延迟渲染器的数据流向
图示13.2 半透明几何图形对不透明几何图形的系列依赖
图示 13.3 半透明和不透明几何的平行渲染



表2.1 稀疏纹理块大小
表6.1 管道资源限制
表6.2 纹理比较函数
表7.1 动态和静态状态有效性
表9.1 GLSL和SPIR-V细分模式
表9.2 GLSL和SPIR-V曲面细分绕组顺序
表10.1

Vulkan是用于图形和计算设备的编程接口。 Vulkan设备通常由处理器和多个固定功能硬件块组成,以加速在图形和计算中使用的操作。设备中的处理器通常是一个非常宽的多线程处理器,因此Vulkan中的计算模型主要基于并行计算。 Vulkan设备还可以访问可能与您的应用程序运行所在的主处理器共享或可能不共享的内存。 Vulkan也暴露了这个内存给你。 Vulkan是一个显式的API。也就是说,几乎一切都是你的责任。驱动程序是一个软件,它接收形成API的命令和数据,并将它们转换为硬件可以理解的东西。在较旧的API(如OpenGL)中,驱动程序将跟踪许多对象的状态,为您管理内存和同步,并在运行时检查应用程序中的错误。这对开发人员非常有用,但是一旦应用程序调试和运行正常,就会浪费宝贵的CPU时间。 Vulkan通过将几乎所有状态跟踪,同步和内存管理置于应用程序开发人员手中,并通过对必须启用的层委派正确性的检查来解决这个问题。他们在正常情况下不参与您的申请的执行。 由于这些原因,Vulkan既非常冗长又有点脆弱。你需要做大量的工作,以获得Vulkan运行良好,不正确的使用API​​通常会导致图形损坏,甚至程序崩溃,在旧的API,你会收到一个有用的错误消息。作为交换,Vulkan提供对设备的更多控制,一个干净的线程模型,以及比它取代的API更高的性能。 此外,Vulkan被设计为不仅仅是一个图形API。它可以用于异构设备,如图形处理单元(GPU),数字信号处理器(DSP)和固定功能硬件。功能分为粗粒度,宽泛重叠的类别。当前版本的Vulkan定义了传输类别,用于复制数据;计算类别,用于在计算工作负载上运行着色器;和图形类别,其中包括光栅化,图元装配,混合,深度和模板测试,以及图形编程人员熟悉的其他功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值