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