DECLARE_INTERFACE_(ID3D12Device1, ID3D12Device)
{
// 获取资源分配器(Resource Allocator)
STDMETHOD(CreateCommittedResource1)(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(CreateCommandQueue1)(THIS_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
REFIID riid,
_COM_Outptr_opt_ void** ppCommandQueue) PURE;
// 创建命令列表
STDMETHOD(CreateCommandList1)(THIS_ UINT nodeMask,
D3D12_COMMAND_LIST_TYPE type,
ID3D12CommandAllocator *pCommandAllocator,
ID3D12PipelineState *pInitialState,
REFIID riid,
_COM_Outptr_opt_ void** ppCommandList) PURE;
// ...
};
这个接口继承自 ID3D12Device 接口,与之相比,新增了一些带有 "1" 后缀的方法,例如 CreateCommittedResource1、CreateCommandQueue1 和 CreateCommandList1。这些方法在功能上与原始的 CreateCommittedResource、CreateCommandQueue 和 CreateCommandList 方法类似,但提供了额外的参数,以支持更多的资源和功能。
例如,CreateCommittedResource1 方法允许创建受保护的资源,并接受 ID3D12ProtectedResourceSession 参数,以便与保护资源相关联。
这些扩展方法通常是为了支持新的硬件特性和增强功能。在使用时,你可以根据应用程序的需求选择使用适当的接口。
具体的使用和详细的接口说明可以在 DirectX 12 的官方文档中找到。
转载请注明出处:http://www.zyzy.cn/article/detail/26125/Win32 API/D3d12.h/ID3D12Device1