从D3D9到D3D12逐步提升,现在很多以前的引擎还是停留在D3D9,D3D12用的比较少,相信不久的将来,引擎使用的D3D API都会更新到D3D12,为了普及D3D API的开发,会做一个系列文章用于介绍D3D12的特色和应用。由浅入深,逐步讲解,不论做游戏还是做VR,AR都会涉及到渲染,市场上很多公司会针对自己的项目封装一些图形接口用于渲染,掌握D3D12渲染技术是必须的,回到正题,现在市面上或者自研引擎已经进行了DX API的升级,比如Unity引擎已经更新到了D3D11,下面我们先将D3D11和D3D12做一个对比,通过比较从总体上先对D3D12渲染技术有大概的认识,它们最大的区别还是渲染管线。
渲染管线
先看看D3D11的渲染管线:
再看看D3D12的渲染管线:
二者最大区别是:多了一个Root signature,它表示的是CBV/SRV/UAV/Sampler的布局,比如一组VS/PS,VS用了2个CBV,PS用了1个CBV、2个SRV、1个Sampler,这样的布局就能生成一个专用的root signature。root signature和view的值无关,只和布局有关,所以其实是可以共享的。 另外,