ID3D12Device 接口 (d3d12.h)

表示虚拟适配器;它用于创建命令分配器、命令列表、命令队列、围栏、资源、管道状态对象、堆、根签名、采样器和许多资源视图。

注意此接口是在 Windows 10 中引入的。 面向Windows 10的应用程序应使用此接口而不是更高版本。 面向更高版本的Windows 10的应用程序应使用 ID3D12Device 接口的相应版本。 此接口的最新版本是 Windows 10 Fall Creators Update 中引入的 ID3D12Device3
 

继承

ID3D12Device 接口继承自 ID3D12ObjectID3D12Device 还具有以下类型的成员:

方法

ID3D12Device 接口具有这些方法。

 
ID3D12Device::CheckFeatureSupport

获取有关当前图形驱动程序支持的功能的信息。 (ID3D12Device.CheckFeatureSupport)
ID3D12Device::CopyDescriptors

将描述符从源复制到目标。 (ID3D12Device.CopyDescriptors)
ID3D12Device::CopyDescriptorsSimple

将描述符从源复制到目标。 (ID3D12Device.CopyDescriptorsSimple)
ID3D12Device::CreateCommandAllocator

创建命令分配器对象。
ID3D12Device::CreateCommandList

创建命令列表。
ID3D12Device::CreateCommandQueue

创建命令队列。
ID3D12Device::CreateCommandSignature

此方法创建命令签名。
ID3D12Device::CreateCommittedResource

创建一个资源和隐式堆,以便堆足够大,可以包含整个资源,并将资源映射到堆。
ID3D12Device::CreateComputePipelineState

创建计算管道状态对象。
ID3D12Device::CreateConstantBufferView

创建用于访问资源数据的常量缓冲区视图。
ID3D12Device::CreateDepthStencilView

创建用于访问资源数据的深度模具视图。
ID3D12Device::CreateDescriptorHeap

创建描述符堆对象。
ID3D12Device::CreateFence

创建围栏对象。 (ID3D12Device.CreateFence)
ID3D12Device::CreateGraphicsPipelineState

创建图形管道状态对象。
ID3D12Device::CreateHeap

创建可用于放置资源和保留资源的堆。
ID3D12Device::CreatePlacedResource

创建放置在特定堆中的资源。 放置的资源是可用的最轻量资源对象,是创建和销毁速度最快的资源对象。 (ID3D12Device.CreatePlacedResource)
ID3D12Device::CreateQueryHeap

创建查询堆。 查询堆包含查询数组。
ID3D12Device::CreateRenderTargetView

创建用于访问资源数据的呈现目标视图。 (ID3D12Device.CreateRenderTargetView)
ID3D12Device::CreateReservedResource

创建保留的资源,但尚未映射到堆中的任何页面。
ID3D12Device::CreateRootSignature

创建根签名布局。
ID3D12Device::CreateSampler

创建封装纹理采样信息的采样器对象。
ID3D12Device::CreateShaderResourceView

创建用于访问资源中的数据的着色器资源视图。 (ID3D12Device.CreateShaderResourceView)
ID3D12Device::CreateSharedHandle

创建堆、资源或围栏对象的共享句柄。
ID3D12Device::CreateUnorderedAccessView

创建用于无序访问的视图。
ID3D12Device::Evict

启用数据分页,这排除了对该数据的 GPU 访问。
ID3D12Device::GetAdapterLuid

获取当前设备 (适配器) 的本地唯一标识符。
ID3D12Device::GetCopyableFootprints

获取可复制的资源布局。 在上传堆中子分配空间时,帮助应用填充D3D12_PLACED_SUBRESOURCE_FOOTPRINT和D3D12_SUBRESOURCE_FOOTPRINT。
ID3D12Device::GetCustomHeapProperties

根据适配器的体系结构属性,泄露用于非自定义堆类型的等效自定义堆属性。
ID3D12Device::GetDescriptorHandleIncrementSize

获取给定类型的描述符堆的句柄增量的大小。 此值通常用于按正确的量将句柄递增到描述符数组中。
ID3D12Device::GetDeviceRemovedReason

获取删除设备的原因。
ID3D12Device::GetNodeCount

报告与此设备关联的 () 节点 (物理适配器数。
ID3D12Device::GetResourceAllocationInfo

获取此适配器上资源集合所需的内存大小和对齐方式。
ID3D12Device::GetResourceTiling

获取有关平铺资源如何分解为磁贴的信息。 (ID3D12Device.GetResourceTiling)
ID3D12Device::MakeResident

使驻留在设备的对象。
ID3D12Device::OpenSharedHandle

使用 HANDLE 和 REFIID 打开共享资源、共享堆和共享围栏的句柄。
ID3D12Device::OpenSharedHandleByName

使用名称和访问打开共享资源、共享堆和共享围栏的句柄。
ID3D12Device::SetStablePowerState

某些类型的分析和实验原型制作的开发时帮助。

注解

使用 D3D12CreateDevice 创建设备。

对于Windows 10周年纪念日,可通过 ID3D12Device1 提供一些附加功能。

示例

D3D1211on12 示例使用 ID3D12Device,如下所示:

标头文件声明。

// Pipeline objects.
D3D12_VIEWPORT m_viewport;
ComPtr<IDXGISwapChain3> m_swapChain;
ComPtr<ID3D12Device> m_device;
ComPtr<ID3D12Resource> m_renderTargets[FrameCount];
ComPtr<ID3D12Resource> m_depthStencil;
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12GraphicsCommandList> m_commandList;
ComPtr<ID3D12CommandQueue> m_commandQueue;
ComPtr<ID3D12RootSignature >m_rootSignature;
ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
ComPtr<ID3D12DescriptorHeap> m_cbvSrvHeap;
ComPtr<ID3D12DescriptorHeap> m_dsvHeap;
ComPtr<ID3D12DescriptorHeap> m_samplerHeap;
ComPtr<ID3D12PipelineState> m_pipelineState1;
ComPtr<ID3D12PipelineState> m_pipelineState2;
D3D12_RECT m_scissorRect;

检查支持的功能。

inline UINT8 D3D12GetFormatPlaneCount(
    _In_ ID3D12Device* pDevice,
    DXGI_FORMAT Format
    )
{
    D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = {Format};
    if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
    {
        return 0;
    }
    return formatInfo.PlaneCount;
}

请参阅 D3D12 引用中的示例代码

要求

   
目标平台 Windows
标头 d3d12.h

另请参阅

核心接口

创建描述符

ID3D12Device1

ID3D12Device2

ID3D12Object

Direct3D 12 中的内存管理