我一直致力于构建 DX12 渲染器。目前,在查看了许多示例(Mini Engine、BGFX、...)之后,我想我终于找到了描述符绑定的最佳解决方案。这是过程:
- 当调用 addTexture 或任何添加资源时 - 从静态着色器可见堆(CPU 和 GPU 句柄)分配描述符句柄
- 当用户想要绑定一个描述符集时,遍历集合中的所有描述符并使用创建描述符时分配的 GPU 句柄调用 SetRootDescriptorTable。
这是最优化的方法吗?它只涉及在帧开始时绑定 2 个堆(采样器和 cbv_srv_uav)并调用 SetRootDescriptorTable。(我们并没有真正使用 RootDescriptors,因为我们的目标平台是控制台(AMD gpu),它的根签名限制为 13 DWORDS)