ID3D12Device4::CreateCommittedResource1 方法 (d3d12.h)
为受保护会话) 创建资源和隐式堆 (,以便堆足够大,可以包含整个资源,并将资源映射到堆。 有关代码示例,另请参阅 ID3D12Device::CreateCommittedResource 。
语法
HRESULT CreateCommittedResource1(
[in] const D3D12_HEAP_PROPERTIES *pHeapProperties,
[in] D3D12_HEAP_FLAGS HeapFlags,
[in] const D3D12_RESOURCE_DESC *pDesc,
[in] D3D12_RESOURCE_STATES InitialResourceState,
[in, optional] const D3D12_CLEAR_VALUE *pOptimizedClearValue,
[in, optional] ID3D12ProtectedResourceSession *pProtectedSession,
[in] REFIID riidResource,
[out, optional] void **ppvResource
);
参数
[in] pHeapProperties
类型: const D3D12_HEAP_PROPERTIES*
指向为资源堆提供属性 的 D3D12_HEAP_PROPERTIES 结构的指针。
[in] HeapFlags
类型: D3D12_HEAP_FLAGS
堆选项,作为 D3D12_HEAP_FLAGS 枚举常量的按位 OR 组合。
[in] pDesc
类型: const D3D12_RESOURCE_DESC*
指向描述 资源的D3D12_RESOURCE_DESC 结构的指针。
[in] InitialResourceState
资源的初始状态,作为 D3D12_RESOURCE_STATES 枚举常量的按位 OR 组合。
将资源与 D3D12_HEAP_TYPE_UPLOAD 堆一起创建时,必须将 InitialResourceState 设置为 D3D12_RESOURCE_STATE_GENERIC_READ。
将资源与 D3D12_HEAP_TYPE_READBACK 堆一起创建时,必须将 InitialResourceState 设置为 D3D12_RESOURCE_STATE_COPY_DEST。
[in, optional] pOptimizedClearValue
类型: const D3D12_CLEAR_VALUE*
指定描述明色默认值 的D3D12_CLEAR_VALUE 结构。
pOptimizedClearValue 指定清除操作最适合的值。 当创建的资源是具有 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET 或 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 标志的纹理时,应选择最常用于调用清除操作的值。 可以使用其他值调用清除操作,但这些操作的效率不如值与传递给资源创建的值匹配时那样有效。
使用 D3D12_RESOURCE_DIMENSION_BUFFER 时,必须将 pOptimizedClearValue 设置为 nullptr
。
[in, optional] pProtectedSession
类型: ID3D12ProtectedResourceSession*
指向对象的可选指针,该对象表示内容保护的会话。 如果提供,此会话指示应保护资源。 可以通过调用 ID3D12Device4::CreateProtectedResourceSession 获取 ID3D12ProtectedResourceSession。
[in] riidResource
类型: REFIID
对要在 ppvResource 中返回的资源接口 (GUID) 的全局唯一标识符的引用。
虽然 riidResource 通常是 ID3D12Resource 的 GUID,但它可能是任何接口的 GUID。 如果资源对象不支持此 GUID 的接口,则创建将失败并 E_NOINTERFACE。
[out, optional] ppvResource
类型: void**
指向内存块的可选指针,该内存块接收所请求的指向所创建资源对象的接口指针。
ppvResource 可以是 nullptr
,以启用功能测试。 当 ppvResource 为 nullptr
时,不会创建任何对象,并在 pDesc 有效时返回S_FALSE。
返回值
类型: HRESULT
如果函数成功,则返回 S_OK。 否则,它将返回 HRESULT错误代码。
返回值 | 说明 |
---|---|
E_OUTOFMEMORY | 内存不足,无法创建资源。 |
有关其他可能的返回值,请参阅 Direct3D 12 返回代码 。
备注
此方法创建资源和堆,以便堆足够大,可以包含整个资源,并将资源映射到堆。 创建的堆称为隐式堆,因为应用程序无法获取堆对象。 在释放资源上的最终引用之前,应用程序必须确保 GPU 不再读取或写入此资源。
在方法将控制权返回给应用程序之前,隐式堆将驻留在 GPU 访问中。 另请参阅 驻留。
无法更改资源 GPU VA 映射。 请参阅 ID3D12CommandQueue::UpdateTileMappings 和 Volume 平铺资源。
此方法可以由多个线程同时调用。
要求
最低受支持的客户端 | Windows 10内部版本 20348 |
最低受支持的服务器 | Windows 10内部版本 20348 |
目标平台 | Windows |
标头 | d3d12.h |
Library | d3d12.lib |
DLL | d3d12.dll |