Skip to main content
创建资源和隐式堆,使堆足够大以包含整个资源,并将资源映射到该堆。

语法

参数

pHeapProperties [in]
类型:const D3D12_HEAP_PROPERTIES *
指向 D3D12_HEAP_PROPERTIES 结构体的指针,该结构体提供资源堆的属性。 HeapFlags [in]
类型:D3D12_HEAP_FLAGS
堆选项,为 D3D12_HEAP_FLAGS 枚举常量的按位 OR 组合。 pDesc [in]
类型:const D3D12_RESOURCE_DESC*
指向 D3D12_RESOURCE_DESC 结构体的指针,该结构体描述资源。 InitialResourceState [in]
类型:D3D12_RESOURCE_STATES
资源的初始状态,为 D3D12_RESOURCE_STATES 枚举常量的按位 OR 组合。 当将资源与 D3D12_HEAP_TYPE_UPLOAD 堆一起创建时,必须将 InitialResourceState 设置为 D3D12_RESOURCE_STATE_GENERIC_READ 当将资源与 D3D12_HEAP_TYPE_READBACK 堆一起创建时,必须将 InitialResourceState 设置为 D3D12_RESOURCE_STATE_COPY_DEST pOptimizedClearValue [in, optional]
类型:const D3D12_CLEAR_VALUE *
指定 D3D12_CLEAR_VALUE 结构体,该结构体描述清除颜色的默认值。 pOptimizedClearValue 指定进行清除操作时最优的值。当创建的资源是带有 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGETD3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 标志的纹理时,应选择最常用于清除操作的值。您可以使用其他值调用清除操作,但这些操作不会像值与传递给资源创建的值相匹配时那么高效。 当使用 D3D12_RESOURCE_DIMENSION_BUFFER 时,必须将 pOptimizedClearValue 设置为 nullptr riidResource [in]
类型:const IID &
要在 ppvResource 中返回的资源接口的全局唯一标识符 (GUID) 的引用。 虽然 riidResource 最常是 ID3D12ResourceGUID,但它也可以是任何接口的 GUID。如果资源对象不支持此 GUID 的接口,则创建失败并返回 E_NOINTERFACE ppvResource [out, optional]
类型:void **
可选指针,指向接收所创建资源对象的所请求接口指针的内存块。 ppvResource 可以为 nullptr,以启用功能测试。当 ppvResourcenullptr 时,不会创建对象,并且当 pDesc 有效时返回 S_FALSE

返回值

类型:HRESULT 如果函数成功,则返回 S_OK。否则,返回 HRESULT 错误代码 有关其他可能的返回值,请参阅 Direct3D 12 返回代码

备注

此方法创建资源和堆,使堆足够大以包含整个资源,并将资源映射到该堆。创建的堆称为隐式堆,因为应用程序无法获取堆对象。在释放对资源的最后一个引用之前,您的应用程序必须确保 GPU 将不再读取或写入此资源。 在该方法将控制权返回给您的应用程序之前,隐式堆将被驻留以供 GPU 访问。另请参阅 驻留 资源 GPU VA 映射无法更改。请参阅 ID3D12CommandQueue::UpdateTileMappings卷平铺资源 多个线程可以同时调用此方法。

示例

D3D12Bundles 示例按以下方式使用 ID3D12Device::CreateCommittedResource 创建顶点缓冲区。
请参阅 Direct3D 12 参考中的示例代码

要求

头文件: d3d12_xs.h 或 d3d12_x.h
库: d3d12_xs.lib 或 d3d12_x.lib
支持的平台:XBOX Series 主机和 XBOX One 系列

另请参阅

CreatePlacedResource CreateReservedResource D3D12_HEAP_FLAGS ID3D12Device
最后修改于 2026年8月13日