DX12 对描述符的一些理解
描述符
D3D12中GPU资源并不直接绑定到渲染流水线上,而是通过名为描述符(Descriptor)的中间对象来绑定。不同阶段使用不同的描述符。通俗的来讲描述符实际上就是资源的地址值。
一般来说常用的描述符有以下几种:
常用的描述符有:
- 常量缓冲区视图
- 着色器资源视图
- 无序访问视图
- Sampler:采样器,用于采样纹理资源
- RTV(render target view):渲染目标视图
- DSV(depth/stencil view):深度/模板视图
描述符堆
我认为描述符堆就是存放描述符的数组,可以看这一张官方给的图
描述符堆有几种类型:
- D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV:可以存放CBV, SRV和UAV,图中可以看出这几种描述符不一样但是可以反正同一个堆中
- D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER: 存放sampler
- D3D12_DESCRIPTOR_HEAP_TYPE_RTV:存放RTV
- D3D12_DESCRIPTOR_HEAP_TYPE_DSV:存放DSV
其中CBV_SRV_UAV和SAMPLER都是可以被shader使用的数据,但却被分成两类,原因是在大多