我首先学习了dx12,所以我不知道dx11是如何工作的。
我听说dx11总体上容易一些,但它在哪里呢?例如,在哪里使用常量缓冲区?
发布于 2022-06-08 23:34:04
主要的区别在于,在使用DX12时,您需要非常明确地说明如何(通过API)与GPU对话。DX11是一个更高的级别(概念上),这意味着大量的繁重工作都是在引擎盖下完成的(在驱动程序中)。在使用API (着色器、各种状态等)时,仍然需要将所有不同的部分放在一起,但是除了指定所需的内容和设置之外,您并不需要考虑所有这些东西是如何结合在一起的。
DX12的明确性涉及到更多的工作;您需要编写更多的代码,跟踪更多的状态(并提前考虑这些状态是如何组合在一起的),并且通常只需要更仔细地考虑问题。驱动程序是一个相对较薄的层,大部分的工作都取决于应用程序开发人员。
使用D3D11,API要简单得多,更不显着,因此您需要的提升就更少了。在司机身上做了大量的工作(对你不透明)。大多数现代的驱动程序都会旋转一串线程,将所有的东西整合到对设备有意义的东西中,并隐藏大量的开销。
使用DX11,驱动程序得到了很大的优化,因此性能非常好。但是,与开发人员明确了解谜题中所有部分的良好DX12应用程序相比,它最终还是要做更多的工作(即使大部分工作是“幕后的”)。
https://stackoverflow.com/questions/71826932
复制相似问题