08VulKan——描述符布局、缓冲、描述符池和描述符集
整体思想: 对于一些所有顶点都共享的属性,比如顶点的变换矩阵,将它们作为顶点属性为每个顶点都传递一份显然是非常浪费的 。VulKan提出使用资源描述符解决这种全局变量, 描述符是用来在着色器中访问缓冲和图像数据的一种方式。可以将变换矩阵存储在一个缓冲中,然后通过描述符在着色器中访问它 。 描述符的使用由三部分组成: 1.在管线创建时指定描述符的布局结构 2.从描述符对象池中分配描述符集合 3.在渲染阶段绑定描述符集合 总之: descriptor:是特殊的不透明的 shader 变量,用来以间接方式访问缓冲区和图像资源。它可以被认为是指向某个资源的“指针” ; 描述符布局(descriptor layout):指定了管线访问的资源的类型; 描述符集合(descriptor set):指定将绑定到描述符的实际缓冲区或映射资源,描述符集合会像顶点缓冲区和帧缓冲区一样被绑定到绘制命令; 描述符池: 描述符集合不能直接创建,它们必须像命令缓冲区一样,从对象池中分配使用。对于描述符集合相当于调用描述符对象池 。 顶点着色器与descriptor之间的绑定关系: shader 用着色器语言显式地引用这些 descriptor。 例如,在GLSL里: layout ( set =M, binding=N) uniform sampler2D variableNameArray[I]; M 指在