D3D9O12是一个映射层,它将图形命令从DirectX9映射到DirectX12。D3D9O12不是DirectXAPI的实现,而是D3D9usermodeDDI(设备驱动接口)的实现。这意味着它不是一个名为d3d9.dll的二进制文件,而是名为d3d9o12.dll。
当一个应用程序创建一个D3D9设备时,他们可能会选择它是一个D3D9O12设备,而不是一个原生D3D9设备。当这种情况发生时,d3d9o12.dll会被D3D9运行时加载并初始化。当应用程序调用渲染命令时,D3D9将验证这些命令,然后将这些命令转换为D3D9的DDI并发送给D3D9O12,就像任何D3D9驱动程序一样。D3D9O12将接收这些命令,并将其转换为D3D12API调用,这些调用会被D3D12运行时进一步验证,可选择包括D3D12调试层,然后将其转换为D3D12DDI并发送给D3D12驱动程序。
构建为了构建D3D9O12,必须安装WDK(WidowsDriverKit),以便为D3D9O12提供d3d10umddi.h,并生成D3D12TraslatioLayer_WDK项目,它承载了一些解析DXBC着色器和容器所需的代码。如果D3D12TraslatioLayer及其子项目D3D12TraslatioLayer_WDK和DXBCParser还没有被包含,那么在用CMake构建时,D3D12TraslatioLayer_WDK将从GitHub中获取。DxbcSiger.dll将自动从NuGet拉取。
兼容性如果可能,我们将尝试保持D3D9和D3D9O12之间的兼容性。










评论