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

# PresentX (família XBOX One)

> Apresenta um conjunto de recursos para exibição.

Apresenta um conjunto de recursos para exibição.

## Sintaxe

```cpp theme={null}
HRESULT PresentX(
        UINT PlaneCount,
        const D3D12XBOX_PRESENT_PLANE_PARAMETERS* pPlaneParameters,
        const D3D12XBOX_PRESENT_PARAMETERS* pPresentParameters)
```

### Parâmetros

*PlaneCount*   \_In\_range\_(1, D3D12XBOX\_PRESENT\_PLANES\_MAX)
Tipo: UINT

O número de planos a serem apresentados. Vários planos podem consistir em um plano de fundo com sobreposições e/ou pares de composições padrão e HDR (High Dynamic Range) do quadro. Use uma contagem de planos igual a 0 para alternar a exibição para nulo, o que definirá a cor da tela como preta. O XBOX Series X|S permite a mesclagem de planos maiores que 1920 x 1080, ambos podendo ser HDR (High Dynamic Range).

*pPlaneParameters*   \_In\_reads\_(PlaneCount)
Tipo: const [D3D12XBOX\_PRESENT\_PLANE\_PARAMETERS](/pt-BR/reference/graphics/d3d12_x/structs/d3d12xbox_present_plane_parameters)\*

Ponteiro para o primeiro elemento de uma matriz de parâmetros usados para controlar a apresentação de cada plano fornecido. Organize a matriz pela ordem Z: de trás para a frente. Defina os elementos pela proximidade mais próxima e, em seguida, por pares de espaço de cores (HDR-SDR).

*pPresentParameters*   \_In\_opt\_
Tipo: const [D3D12XBOX\_PRESENT\_PARAMETERS](/pt-BR/reference/graphics/d3d12_x/structs/d3d12xbox_present_parameters)\*

Opcional. Um ponteiro para um conjunto de parâmetros usados para controlar a apresentação.

### Valor retornado

Tipo: HRESULT

Código de êxito ou de erro HRESULT.

Retorna S\_OK se os recursos de troca especificados tiverem sido enfileirados com êxito para apresentação.

Retorna ERROR\_WAS\_STILL\_DRAWING se [D3D12XBOX\_PRESENT\_FLAG\_DO\_NOT\_WAIT](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_present_flags) for especificado e um ou mais dos *ppResources* especificados de *pPlaneParameters* estiverem sendo exibidos ou enfileirados para apresentação no momento.

Retorna E\_INVALIDARG em caso de parâmetros inválidos ou composição inválida da apresentação.

Retorna D3DERR\_DEVICEREMOVED se a GPU parar de responder antes da chamada para **PresentX**

## Comentários

Os recursos incluídos nas matrizes *ppResources* contidas em *pPlaneParameters* servem como substitutos das cadeias de troca herdadas e devem ser criados com suporte para serem invertidos (flip) para uma tela. Para habilitar o suporte à inversão, chame [CreateCommittedResource](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12device-createcommittedresource) e defina o sinalizador **D3D12\_HEAP\_FLAG\_ALLOW\_DISPLAY** ([D3D12\_HEAP\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_heap_flags)) no parâmetro *pDesc*. Recursos criados sem um heap subjacente ainda não são permitidos.

As cadeias de troca evoluíram para uma coleção de recursos exibíveis gerenciada pelo usuário; no entanto, devido às limitações do TLB, um número limitado desse tipo de recurso pode ser instanciado por vez. Um recurso exibível não pode ser liberado até o ponto de desalocação se estiver sendo varrido (scan-out) por uma tela ou enfileirado para apresentação no momento. Primeiro, você deve inverter a tela para outro conjunto de recursos ou para nulo (se o aplicativo for desligado). Para executar uma apresentação nula, chame **PresentX(0, nullptr, nullptr);**.

Com *ppResources* substituindo as cadeias de troca, o espaço de cores de um recurso de troca agora é declarado como parte dos parâmetros de plano incluídos em *pPlaneParameters*, e o mapeamento de tons automático para o GameDVR é selecionado para um recurso por meio do sinalizador de criação de recurso [D3D12XBOX\_RESOURCE\_FLAG\_ALLOW\_AUTOMATIC\_GAMEDVR\_TONE\_MAP](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_flags), ao custo de armazenamento de heap adicional e de custo de GPU por Present. O XBOX Series X|S adiciona mais dois formatos de recurso de troca, **DXGI\_FORMAT\_R9G9B9E5\_SHAREDEXP** e **DXGI\_FORMAT\_A8\_UNORM**. Um recurso de troca **DXGI\_FORMAT\_A8\_UNORM** sempre deve ser emparelhado com um recurso de troca **DXGI\_FORMAT\_R9G9B9E5\_SHAREDEXP**. Ele serve como o canal alfa do recurso RGBE quando um canal alfa é desejado (por exemplo, ao mesclar mais de um plano). O XBOX Series X|S também permite que recursos de troca usem DCC (Delta Color Compression) por meio do sinalizador de criação de recurso [D3D12XBOX\_RESOURCE\_FLAG\_ALLOW\_DCC](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_flags).

Os recursos podem não ser apresentados se a identificação dos quadros usados em sua produção, ou pelo menos usados no início de sua construção, não for fornecida. Isso é necessário para a correlação das estatísticas de apresentação com quadros individuais, para medir a latência do pipeline de quadro completo desde a origem e para a amostragem de entrada até a tela. A identificação é realizada por meio do membro *Token* dos parâmetros *pPlaneParameters*, em que valores diferentes de [D3D12XBOX\_FRAME\_PIPELINE\_TOKEN](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_frame_pipeline_token) podem ser especificados para cada plano de composição (plano de fundo e sobreposição), considerando a possibilidade de frequências de apresentação de plano diferentes e, portanto, quadros base diferentes. O token de pipeline deve ser incluído de forma redundante para planos que tenham origem no mesmo quadro.

Os quadros e seus recursos de troca associados devem ser apresentados na ordem em que foram produzidos. Um fluxo de tokens de pipeline de quadro originados de [WaitFrameEventX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_waitframeeventx) é encerrado por meio de *PresentX*, sem permissão para descarte ou reordenação de quadros. O conteúdo de um plano de composição pode ser mantido na tela enquanto um ou mais outros planos estão sendo atualizados; para isso, passe o mesmo recurso e token de quadro fornecidos para o plano na chamada anterior para *PresentX*.

Para remover um plano de composição estabelecido durante uma série de chamadas para *PresentX*, omita os recursos e tokens do plano da matriz apontada por *pPlaneParameters* em uma chamada subsequente para *PresentX*.

Os recursos de troca apresentados são invertidos para a tela no momento do VBlank agendado; isso pressupõe que a chamada para *PresentX* seja feita e processada dentro do limite do destino declarado em *ImmediateThresholdPercent* de *pPresentParameters*. Se **PresentX** perder o VBlank, mas chegar dentro do limite, ele será invertido para a tela imediatamente. Esse limite é baseado em uma porcentagem do tempo de varredura da tela (de VBlank a VBlank), e não em uma porcentagem do intervalo de quadro definido. Além disso, ao contrário da apresentação imediata, configurada por meio do uso do sinalizador [D3D12XBOX\_PRESENT\_FLAG\_IMMEDIATE](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_present_flags) em *pPresentParameters* (que dispara imediatamente a origem do próximo quadro), as inversões imediatas baseadas no limite sinalizarão a origem do quadro subsequente somente se o tempo dessa origem já tiver passado.

## Requisitos

**Cabeçalho:** d3d12\_x.h

**Biblioteca:** d3d12\_x.lib

**Plataformas com suporte:** família XBOX One

## Confira também

[ID3D12CommandQueue](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12commandqueue/id3d12commandqueue)


## Related topics

- [XFrontPanelPresentBuffer](/es/reference/devkit/xfrontpaneldisplay/functions/xfrontpanelpresentbuffer.md)
- [Diretório de tópicos NDA: links ativos do Microsoft Learn](/pt-BR/nda/nda-topic-directory.md)
- [Directorio de temas NDA: enlaces activos a Microsoft Learn](/es/nda/nda-topic-directory.md)
- [Game streaming latency compensation deep dive](/build/core-features/common/game-streaming/game-streaming-latency-compensation-deep-dive.md)
- [XGameStreamingGetAssociatedFrame](/reference/system/xgamestreaming/functions/xgamestreaminggetassociatedframe.md)
