ID3D12Device10::CreatePlacedResource2 方法 (d3d12.h)
创建放置在特定堆中的资源。 放置的资源是可用的最轻量资源对象,是创建和销毁速度最快的资源对象。
应用程序可以通过在堆区域中重叠多个 Direct3D 放置和保留的资源来重复使用视频内存。 简单的内存重用模型(备注中所述)存在,以阐明哪些重叠资源在任何给定时间都有效。 若要最大化图形工具支持,不支持简单的模型数据继承;不支持细化磁贴和子资源无效。 仅发生完全重叠的资源无效。
需要 DirectX 12 Agility SDK 1.7 或更高版本。
语法
HRESULT CreatePlacedResource2(
ID3D12Heap *pHeap,
UINT64 HeapOffset,
const D3D12_RESOURCE_DESC1 *pDesc,
D3D12_BARRIER_LAYOUT InitialLayout,
const D3D12_CLEAR_VALUE *pOptimizedClearValue,
UINT32 NumCastableFormats,
const DXGI_FORMAT *pCastableFormats,
REFIID riid,
void **ppvResource
);
参数
pHeap
类型:[in] ID3D12Heap*
指向 ID3D12Heap 接口的指针,该接口表示在其中放置资源的堆。
HeapOffset
类型:UINT64
资源的偏移量(以字节为单位)。 HeapOffset 必须是资源的多个对齐方式,HeapOffset 加上资源大小必须小于或等于堆大小。 GetResourceAllocationInfo 必须用于了解纹理资源的大小。
pDesc
类型:[in] const D3D12_RESOURCE_DESC*
指向描述资源的 D3D12_RESOURCE_DESC 结构的指针。
InitialLayout
纹理资源的初始布局;D3D12_BARRIER_LAYOUT::D 3D12_BARRIER_LAYOUT_UNDEFINED 缓冲区。
pOptimizedClearValue
类型:[in, 可选] 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 必须为 NULL。
NumCastableFormats
pCastableFormats中的元素数。
pCastableFormats
此资源可以强制转换为的 DXGI_FORMAT 结构的连续数组。
riid
类型:REFIID
资源接口的全局唯一标识符(GUID)。 这是一个输入参数。
可以使用 __uuidof
宏获取资源的接口 REFIID或 GUID。 例如,__uuidof(ID3D12Resource)
获取资源接口的 GUID。 尽管 riid 通常是 ID3D12Resource的 GUID,但对于任何接口,它可能是任何 GUID。 如果资源对象不支持此 GUID的接口,则创建失败并 E_NOINTERFACE。
ppvResource
类型:[out, optional] void**
指向接收指向资源的指针的内存块的指针。 ppvResource 可以为 NULL,以启用功能测试。 当 ppvResource 为 NULL 时,不会创建任何对象,并且当 pResourceDesc 和其他参数有效时,将返回S_FALSE。
返回值
类型:HRESULT
如果内存不足而无法创建资源,此方法将返回 E_OUTOFMEMORY。 有关其他可能的返回值,请参阅 Direct3D 12 返回代码。
言论
有关 ID3D12Device::CreatePlacedResource,请参阅 备注。
要求
要求 | 价值 |
---|---|
目标平台 | 窗户 |
标头 | d3d12.h |
库 | D3d12.lib |
DLL | D3d12.dll |