PlaneCount _In_range_(1, D3D12XBOX_PRESENT_PLANES_MAX)
Tipo: UINTO 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*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*Opcional. Um ponteiro para um conjunto de parâmetros usados para controlar a apresentação.
Tipo: HRESULTCó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 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
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 e defina o sinalizador D3D12_HEAP_FLAG_ALLOW_DISPLAY (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, 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.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 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 é 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 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.