【问题标题】:Does DirectX 12 custom implementation will same as DirectX 11?DirectX 12 自定义实现是否与 DirectX 11 相同?
【发布时间】:2016-12-12 09:38:40
【问题描述】:

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

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

【问题讨论】:

  • 很简单,用DX11。不要仅仅因为 GPU-CPU 通信会遇到性能瓶颈而尝试使用 DX12。如果你问这个问题,那你肯定不需要DX12的性能。

标签: c++ directx directx-11 directx-12


【解决方案1】:

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

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

在 DirectX 12 中,DirectX Runtime 的作用很小,应用程序负责所有 DirectX 11 Runtime 将为您处理的事情。这对于允许应用程序更多地控制硬件的驱动方式非常强大,但这意味着程序员有责任在不寻常的情况下以及在各种硬件中正确处理一切

图形编程和调试已经是一个挑战,而使用 DirectX 12 会使时序问题变得非常复杂(类似于进行多线程 lockfree 编程时可能遇到的各种风险),更多特定于供应商的行为需要更多测试验证、可能在多个帧上发生的资源管理问题,以及对所有可编程着色器如何管理与 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 驱动程序可用于从Direct3D hardware feature level 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 11DirectX 12

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多