ID3D12Device2 接口是 DirectX 12 的扩展接口,扩展了 ID3D12Device1 接口,提供了额外的功能和改进。以下是 ID3D12Device2 接口的简要定义:
DECLARE_INTERFACE_(ID3D12Device2, ID3D12Device1)
{
    // 获取资源分配器(Resource Allocator)
    STDMETHOD(CreateCommittedResource2)(THIS_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
                                        D3D12_HEAP_FLAGS HeapFlags,
                                        const D3D12_RESOURCE_DESC *pDesc,
                                        D3D12_RESOURCE_STATES InitialResourceState,
                                        const D3D12_CLEAR_VALUE *pOptimizedClearValue,
                                        ID3D12ProtectedResourceSession *pProtectedSession,
                                        REFIID riidResource,
                                        _COM_Outptr_opt_  void** ppvResource) PURE;

    // 创建命令队列
    STDMETHOD(CreateCommandQueue2)(THIS_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
                                   REFIID riid,
                                   _COM_Outptr_opt_  void** ppCommandQueue) PURE;

    // 创建命令列表
    STDMETHOD(CreateCommandList2)(THIS_ UINT nodeMask,
                                   D3D12_COMMAND_LIST_TYPE type,
                                   ID3D12CommandAllocator *pCommandAllocator,
                                   ID3D12PipelineState *pInitialState,
                                   REFIID riid,
                                   _COM_Outptr_opt_  void** ppCommandList) PURE;

    // ...
};

这个接口继承自 ID3D12Device1 接口,新增了一些带有 "2" 后缀的方法,例如 CreateCommittedResource2、CreateCommandQueue2 和 CreateCommandList2。这些方法在功能上与原始的 CreateCommittedResource、CreateCommandQueue 和 CreateCommandList 方法类似,但提供了额外的参数,以支持更多的资源和功能。

这些扩展方法通常是为了支持新的硬件特性和增强功能。在使用时,你可以根据应用程序的需求选择使用适当的接口。

具体的使用和详细的接口说明可以在 DirectX 12 的官方文档中找到。


转载请注明出处:http://www.zyzy.cn/article/detail/26126/Win32 API/D3d12.h/ID3D12Device2