初识Vulkan(28):图解图形管线

本文介绍了Vulkan中的图形管道,重点讲述了顶点输入状态,包括顶点着色器理解的顶点数据和顶点缓冲区的创建与传输。接着讨论了描述符,包括描述符集合的分配、描述符池和描述符集合布局。总结了如何将数据写入到描述符中,以及顶点缓冲区的绑定与声明。
摘要由CSDN通过智能技术生成

08/18/2020

图形管道

图像管道与之前的多重采样的代码创建的基本保持一致
Graphics Pipeline

  • 黄色矩阵为可编译管道,由程序员写着色器代码
  • 白色管道为固定管道,由驱动程序编写,我们可以修改它们的状态
  • 第一步绘制命令由命令缓冲区中的vkCmdDraw开始执行流程图(从上往下)
  • 在绘制命令之前需要绑定各个所需要的资源,比如管道,缓冲区,描述符。即左右两边的资源

顶点输入状态(Vertex Input State)

顶点着色器能够理解顶点数据,它必须声明和已定义的顶点属性对应的输入。需要在顶点着色器中欧创建一个带有Inut存储类的变量,使用in类型的变量即可表达。
Vertex Input State
顶点缓冲区的传输

  • 顶点绑定描述
  • 顶点属性描述
    • R32G32B32A32 代表着vec4类型
    • R32G32B32 代表vec3类型
    • location 与GLSL着色器的location对应
    • binding 与 绑定描述的binding相连

创建缓冲区

Create Buffer

  • 通过逻辑设备,创建缓冲区和分配缓冲区资源
  • 通过内存映射,把数据传输到内存中

重点

Data在主机内存中,VkDeviceMemory在设备显存中,如果需要传输,需要使用vkMapMemory把设备显存的这块地址映射到主机内存中,然后使用拷贝函数传输数据,最后结束映射vkUnmapMemory。

描述符

Create Descriptor Set

  • 分配描述符集合而不是创建
  • 描述符集合主要明确描述符集合布局和描述符池
  • 描述符池子规定了生成的描述符的数量和类型,和最大描述符集合数量
  • 描述符集合布局规定了着色器中的描述符的位置,数量和类型
  • 描述符集合布局中的每个描述符数量决定了描述符池子中对应的描述符的数量
  • 管道布局包含着一个或者多个描述符集合布局

写入数据/资源到描述符中

 VkDescriptorBufferInfo bufferInfo{
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值