ID3D12Device::CreateReservedResource 方法 (d3d12.h)
创建保留的资源,但尚未映射到堆中的任何页面。
语法
HRESULT CreateReservedResource(
[in] const D3D12_RESOURCE_DESC *pDesc,
[in] D3D12_RESOURCE_STATES InitialState,
[in, optional] const D3D12_CLEAR_VALUE *pOptimizedClearValue,
[in] REFIID riid,
[out, optional] void **ppvResource
);
参数
[in] pDesc
类型: const D3D12_RESOURCE_DESC*
指向描述资源的 D3D12_RESOURCE_DESC 结构的指针。
[in] InitialState
资源的初始状态,作为 D3D12_RESOURCE_STATES 枚举常量的按位 OR 组合。
[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] riid
类型: 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 返回代码 。
注解
CreateReservedResource 等效于 Direct3D 11 中的 D3D11_RESOURCE_MISC_TILED 。 它创建一个仅具有虚拟内存的资源,没有后备存储。
需要将资源映射到物理内存 (即使用 CopyTileMappings 和 UpdateTileMappings 的堆) 。
仅当适配器支持平铺资源第 1 层或更高版本时,才能创建这些资源类型。 平铺资源层定义访问未映射到堆的资源的行为。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d12.h |
Library | D3D12.lib |
DLL | D3D12.dll |