C++ DirectX 12自定义实现是否与DirectX 11相同?

C++ DirectX 12自定义实现是否与DirectX 11相同?,c++,directx,directx-11,directx-12,C++,Directx,Directx 11,Directx 12,我正在阅读“使用DirectX 11进行实际渲染”,并希望在深入理解DirectX概念后编写一个简单的引擎 但今天我们有DirectX 12,它解决了驱动程序开销的问题(因为我们更接近硬件),我正在考虑使用12作为我的主要渲染器。但是我的引擎在开发结束时会成为某种驱动程序吗?我认为驱动程序开发人员比我聪明得多,所以我可以让12次渲染比11次渲染慢。对吧? DirectX 11和DirectX 12解决相同的问题,但方式不同。它们都驱动相同的硬件,并且可以访问相同的硬件功能。区别在于CPU和内存的

我正在阅读“使用DirectX 11进行实际渲染”,并希望在深入理解DirectX概念后编写一个简单的引擎


但今天我们有DirectX 12,它解决了驱动程序开销的问题(因为我们更接近硬件),我正在考虑使用12作为我的主要渲染器。但是我的引擎在开发结束时会成为某种驱动程序吗?我认为驱动程序开发人员比我聪明得多,所以我可以让12次渲染比11次渲染慢。对吧?

DirectX 11和DirectX 12解决相同的问题,但方式不同。它们都驱动相同的硬件,并且可以访问相同的硬件功能。区别在于CPU和内存的管理方式

对于DirectX 11,API是“低级的”,但DirectX运行时管理视频内存,协调资源上载/下载,处理缓冲区重命名,并确保GPU和CPU之间的正确同步

对于DirectX 12,DirectX运行时所做的工作很少,应用程序负责DirectX 11运行时为您处理的所有事情。这是非常强大的,它允许应用程序更多地控制硬件的驱动方式,但这意味着程序员有责任确保即使在不寻常的情况下,以及在各种硬件上,一切都正常

图形编程和调试已经是一项挑战,使用DirectX 12会因时间问题(类似于多线程编程可能带来的风险)、需要更多测试验证的更多供应商特定行为、可能在多个帧上发生的资源管理问题而使其变得极为复杂,并负责所有可编程着色器如何管理与PCU的信息共享

如果您是使用DirectX进行图形编程的新手,那么我强烈建议您使用DirectX 11。即使最终使用DirectX 12对您有意义,API设计和文档假定您已经是DirectX 11编程和HLSL方面的专家。一旦您成为DirectX 11的专家,那么在特定项目中使用DirectX 12可能仍然没有意义,除非您发现DirectX 11 API的CPU开销确实是一个瓶颈。对于那些主要对学习这项技术感兴趣的人来说,这两个方面都很值得学习,但首先你应该牢牢掌握DirectX 11

还需要注意的是,DirectX 11和DirectX 12具有不同的系统要求。DirectX 11在Windows 7、Windows 8.1和Windows 10上受支持,需要WDDM 1.x驱动程序,这些驱动程序可广泛用于从9.1到11.1的视频硬件。DirectX 12在Windows 10(包括Xbox One)上受支持,需要WDDM 2.0驱动程序,但并非适用于所有视频硬件。WDDM 2.0驱动程序可广泛用于大多数Direct3D功能级别11.0或更高版本的硬件,这是市场上“核心PC玩家”的大部分GPU,但不适用于商业设置或旧PC游戏系统中使用的大部分视频卡

现在使用DirectX 12的“最佳点”是,如果你正在编写一个游戏,并且拥有一支规模庞大、经验丰富的图形开发团队;目标是控制台、“核心”PC玩家和/或桌面通用Windows平台(UWP);并且希望游戏是CPU受限的


请参阅DirectX工具包,了解和

DirectX 11和DirectX 12解决相同问题的方法不同。它们都驱动相同的硬件,并且可以访问相同的硬件功能。区别在于CPU和内存的管理方式

对于DirectX 11,API是“低级的”,但DirectX运行时管理视频内存,协调资源上载/下载,处理缓冲区重命名,并确保GPU和CPU之间的正确同步

对于DirectX 12,DirectX运行时所做的工作很少,应用程序负责DirectX 11运行时为您处理的所有事情。这是非常强大的,它允许应用程序更多地控制硬件的驱动方式,但这意味着程序员有责任确保即使在不寻常的情况下,以及在各种硬件上,一切都正常

图形编程和调试已经是一项挑战,使用DirectX 12会因时间问题(类似于多线程编程可能带来的风险)、需要更多测试验证的更多供应商特定行为、可能在多个帧上发生的资源管理问题而使其变得极为复杂,并负责所有可编程着色器如何管理与PCU的信息共享

如果您是使用DirectX进行图形编程的新手,那么我强烈建议您使用DirectX 11。即使最终使用DirectX 12对您有意义,API设计和文档假定您已经是DirectX 11编程和HLSL方面的专家。一旦您成为DirectX 11的专家,那么在特定项目中使用DirectX 12可能仍然没有意义,除非您发现DirectX 11 API的CPU开销确实是一个瓶颈。对于那些主要对学习这项技术感兴趣的人来说,这两个方面都很值得学习,但首先你应该牢牢掌握DirectX 11

还需要注意的是,DirectX 11和DirectX 12具有不同的系统要求。DirectX 11在Windows 7、Windows 8.1和Windows 10上受支持,需要WDDM 1.x驱动程序,这些驱动程序可广泛用于从9.1到11.1的视频硬件。DirectX 12在Windows 10(包括Xbox One)上受支持,需要WDDM 2.0驱动程序,但并非适用于所有视频硬件。WDDM 2.0驱动程序广泛适用于大多数Direct3D功能级别11.0或更高版本的硬件,这些硬件是市场上“核心PC玩家”使用的大多数GPU,但不适用于大部分的