> ## 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.

# GetCopyableFootprints

> Obtiene un diseño de recurso que puede copiarse. Ayuda a la aplicación a rellenar D3D12_PLACED_SUBRESOURCE_FOOTPRINT y D3D12_SUBRESOURCE_FOOTPRINT al suballocar espacio.

Obtiene un diseño de recurso que puede copiarse.
Ayuda a la aplicación a rellenar
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public) y
[D3D12\_SUBRESOURCE\_FOOTPRINT](/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public) al suballocar espacio en montones de carga.

## Sintaxis

```cpp theme={null}
void GetCopyableFootprints(
    const D3D12_RESOURCE_DESC  pResourceDesc,
    UINT FirstSubresource,
    UINT NumSubresources,
    UINT64 BaseOffset,
    D3D12_PLACED_SUBRESOURCE_FOOTPRINT  pLayouts,
    UINT  pNumRows,
    UINT64  pRowSizeInBytes,
    UINT64  pTotalBytes
)
```

### Parámetros

*pResourceDesc \[in]*\
Tipo: const D3D12\_RESOURCE\_DESC \*

Una descripción del recurso, como un puntero a una estructura [D3D12\_RESOURCE\_DESC](/reference/graphics/d3d12/structs/d3d12_resource_desc_public).

*FirstSubresource \[in]*\
Tipo: UINT

Índice del primer subrecurso del recurso.
El intervalo de valores válidos es de 0 a D3D12\_REQ\_SUBRESOURCES.

*NumSubresources \[in]*\
Tipo: UINT

El número de subrecursos del recurso. El intervalo de valores válidos es de 0 a (D3D12\_REQ\_SUBRESOURCES - <i>FirstSubresource</i>).

*BaseOffset*\
Tipo: UINT64

El desplazamiento, en bytes, hasta el recurso.

*pLayouts \[out, optional]*\
Tipo: D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT \*

Un puntero a una matriz (de longitud <i>NumSubresources</i>) de estructuras
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public), que se rellenará con la descripción y la colocación de cada subrecurso.

*pNumRows \[out, optional]*\
Tipo: UINT \*

Un puntero a una matriz (de longitud <i>NumSubresources</i>) de variables enteras, que se rellenará con el número de filas de cada subrecurso.

*pRowSizeInBytes \[out, optional]*\
Tipo: UINT64 \*

Un puntero a una matriz (de longitud <i>NumSubresources</i>) de variables enteras; cada entrada se rellenará con el tamaño sin relleno, en bytes, de una fila de cada subrecurso.

Por ejemplo, si un recurso Texture2D tiene un ancho de 32 y 4 bytes por píxel,

<i>pRowSizeInBytes</i> devuelve 128.

<i>pRowSizeInBytes</i> no debe confundirse con el **row pitch** (paso de fila), ya que si examina <i>pLayouts</i> y obtiene de ahí el paso de fila, obtendrá 256, porque está alineado con D3D12\_TEXTURE\_DATA\_PITCH\_ALIGNMENT.

*pTotalBytes \[out, optional]*\
Tipo: UINT64 \*

Un puntero a una variable entera, que se rellenará con el tamaño total, en bytes.

### Valor devuelto

Tipo: void

Ninguno.

## Comentarios

Esta rutina ayuda a la aplicación a rellenar las estructuras
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public) y
[D3D12\_SUBRESOURCE\_FOOTPRINT](/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public) al suballocar espacio en montones de carga.
Las estructuras resultantes son independientes del adaptador de GPU, lo que significa que los valores no variarán de un adaptador de GPU a otro.
**GetCopyableFootprints** usa detalles especificados sobre formatos de recursos, diseños de texturas y requisitos de alineación (de la estructura [D3D12\_RESOURCE\_DESC](/reference/graphics/d3d12/structs/d3d12_resource_desc_public)) para rellenar las estructuras de subrecursos.
Las aplicaciones tienen acceso a todos estos detalles, por lo que este método, o una variación de él, podría escribirse como parte de la aplicación.

#### Ejemplos

El ejemplo [D3D12Multithreading](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) usa **ID3D12Device::GetCopyableFootprints** de la siguiente manera:

```cpp theme={null}
// Returns required size of a buffer to be used for data upload
inline UINT64 GetRequiredIntermediateSize(
_In_ ID3D12Resource* pDestinationResource,
_In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources)
{
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
UINT64 RequiredSize = 0;

ID3D12Device* pDevice;
pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
pDevice->Release();

return RequiredSize;
}

```

Consulte el [código de ejemplo en la referencia de D3D12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code).

<div class="code" />

## Requisitos

**Encabezado:** d3d12\_xs.h o d3d12\_x.h\
**Biblioteca:** d3d12\_xs.lib o d3d12\_x.lib\
**Plataformas compatibles**: consolas XBOX Series y familia XBOX One

## Consulte también

[CD3DX12\_RESOURCE\_DESC](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/cd3dx12-resource-desc)

[CD3DX12\_SUBRESOURCE\_FOOTPRINT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/cd3dx12-subresource-footprint)

[ID3D12Device](/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [D3D12_PLACED_SUBRESOURCE_FOOTPRINT](/es/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public.md)
- [D3D12_SUBRESOURCE_FOOTPRINT](/es/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public.md)
- [D3D12_TEXTURE_COPY_TYPE](/es/reference/graphics/d3d12/enums/d3d12_texture_copy_type_public.md)
- [D3D12_TEXTURE_COPY_LOCATION](/es/reference/graphics/d3d12/structs/d3d12_texture_copy_location_public.md)
- [GetPMCValue](/es/reference/tools/pix3/functions/getpmcvalue.md)
