D3D9On12微软开发的 DirectX 映射层

联合创作 · 2023-09-29 08:11

D3D9On12 是一个映射层,它将图形命令从 Direct X 9 映射到 DirectX 12。D3D9On12 不是 Direct X API 的实现,而是 D3D9 usermode DDI(设备驱动接口)的实现。这意味着它不是一个名为 d3d9.dll 的二进制文件,而是名为 d3d9on12.dll。

当一个应用程序创建一个 D3D9 设备时,他们可能会选择它是一个 D3D9On12 设备,而不是一个原生 D3D9 设备。当这种情况发生时,d3d9on12.dll 会被 D3D9 运行时加载并初始化。当应用程序调用渲染命令时,D3D9 将验证这些命令,然后将这些命令转换为 D3D9 的 DDI 并发送给 D3D9On12,就像任何 D3D9 驱动程序一样。D3D9On12 将接收这些命令,并将其转换为D3D12 API 调用,这些调用会被 D3D12 运行时进一步验证,可选择包括 D3D12 调试层,然后将其转换为 D3D12 DDI 并发送给 D3D12 驱动程序。

构建

为了构建 D3D9On12,必须安装 WDK(Windows Driver Kit),以便为 D3D9On12 提供 d3d10umddi.h,并生成D3D12TranslationLayer_WDK 项目,它承载了一些解析 DXBC 着色器和容器所需的代码。如果 D3D12TranslationLayer 及其子项目 D3D12TranslationLayer_WDK 和 DXBCParser 还没有被包含,那么在用 CMake 构建时,D3D12TranslationLayer_WDK 将从 GitHub 中获取。DxbcSigner.dll 将自动从 NuGet 拉取。

兼容性

如果可能,我们将尝试保持 D3D9 和 D3D9On12 之间的兼容性。

浏览 1
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报