> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CreatePlacedResource2 (XBOX Series 主机)

> ID3D12Device10::CreatePlacedResource2 在 XBOX Series 主机 Direct3D 12 上的堆中创建一个放置资源，其参数比原始 API 更加扩展。

创建一个放置在特定堆中的资源。放置资源是可用的最轻量级资源对象，其创建和销毁速度最快。

您的应用程序可以通过在堆区域上重叠多个 Direct3D 放置资源和保留资源来重复利用视频内存。简单的内存重用模型（在[备注](#remarks)中描述）用于阐明在任何给定时间哪一个重叠资源是有效的。为了最大化图形工具支持，简单模型中不支持数据继承；也不支持更细粒度的图块和子资源无效化。仅进行完整的重叠资源无效化。

需要 DirectX 12 Agility SDK 1.7 或更高版本。

## 语法

```cpp theme={null}
HRESULT CreatePlacedResource2(
    ID3D12Heap  pHeap,
    UINT64 HeapOffset,
    const D3D12_RESOURCE_DESC1  pDesc,
    D3D12_BARRIER_LAYOUT InitialLayout,
    const D3D12_CLEAR_VALUE  pOptimizedClearValue,
    UINT32 NumCastableFormats,
    DXGI_FORMAT  pCastableFormats,
    const IID & riid,
    void  ppvResource
)
```

### 参数

*pHeap*\
类型：ID3D12Heap \*

指向 **ID3D12Heap** 接口的指针，该接口表示资源所在的堆。

*HeapOffset*\
类型：UINT64

到资源的偏移量（以字节为单位）。*HeapOffset* 必须是资源对齐的倍数，*HeapOffset* 加上资源大小必须小于或等于堆大小。必须使用 [**GetResourceAllocationInfo**](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_getresourceallocationinfo_public) 来了解纹理资源的大小。

*pDesc*\
类型：const D3D12\_RESOURCE\_DESC1 \*

指向 **D3D12\_RESOURCE\_DESC** 结构的指针，该结构描述资源。

*InitialLayout*\
类型：D3D12\_BARRIER\_LAYOUT

纹理资源的初始布局；对于缓冲区为 **D3D12\_BARRIER\_LAYOUT::D3D12\_BARRIER\_LAYOUT\_UNDEFINED**。

*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* 必须为 NULL。

*NumCastableFormats*\
类型：UINT32

*pCastableFormats* 中的元素数量。

*pCastableFormats*\
类型：DXGI\_FORMAT \*

此资源可强制转换到的 [DXGI\_FORMAT](https://learn.microsoft.com/en-us/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format) 结构的连续数组。

*riid*\
类型：const IID &

资源接口的全局唯一标识符 (**GUID**)。这是一个输入参数。

可以使用 `__uuidof` 宏获取资源接口的 **REFIID** 或 **GUID**。例如，`__uuidof(ID3D12Resource)` 获取资源接口的 **GUID**。虽然 **riid** 最常见的是 [**ID3D12Resource**](/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs) 的 GUID，但它可以是任何接口的任何 **GUID**。如果资源对象不支持此 **GUID** 的接口，则创建将失败并返回 **E\_NOINTERFACE**。

*ppvResource*\
类型：void \*\*

指向内存块的指针，该内存块接收指向资源的指针。*ppvResource* 可以为 NULL，以启用功能测试。当 *ppvResource* 为 NULL 时，不会创建对象，并且在 *pResourceDesc* 和其他参数有效时返回 S\_FALSE。

### 返回值

类型：HRESULT

如果没有足够的内存来创建资源，此方法返回 **E\_OUTOFMEMORY**。有关其他可能的返回值，请参阅 [Direct3D 12 返回代码](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues)。

## 备注

请参阅 [ID3D12Device::CreatePlacedResource](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public) 的**备注**。

## 要求

**头文件：** d3d12\_xs.h\
**库：** d3d12\_xs.lib\
**支持的平台**：XBOX Series 主机

## 另请参阅

[CreateCommittedResource](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcommittedresource_public)

[CreateReservedResource](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createreservedresource_public)

[ID3D12Device10](/reference/graphics/d3d12/interfaces/id3d12device10/id3d12device10_public)

[共享堆](https://learn.microsoft.com/en-us/windows/win32/direct3d12/shared-heaps)


## Related topics

- [CreateReservedResource2 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createreservedresource2_public.md)
- [CreateReservedResource1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createreservedresource1_public.md)
- [CreateHeap1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createheap1_public.md)
- [CreateCommandQueue1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device9/methods/id3d12device9_createcommandqueue1_public.md)
- [CreateMetaCommand (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_createmetacommand_public.md)
