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

# Suporte a 120Hz

> Suporte a 120Hz

Este tópico descreve o processo de verificação do suporte a 120Hz e de habilitação de 120Hz para um título.

* [Visão geral](#overview)
* [Como habilitar](#how-to-enable)
* [Telas recomendadas para desenvolvimento em 120Hz](#recommended-displays)
* [Como descobrir se sua tela é compatível com 120 Hz](#display-supports)
* [Padrão de chamada](#calling-pattern)
* [HDR vs. 120Hz em telas mais antigas](#older-displays)
* [40fps](#forty-fps)
* [Suspensão e retomada](#suspend-and-resume)
* [Exemplos relevantes](#relevant-samples)

<a id="overview" />

## Visão geral

O 120Hz oferece jogos com latência ultrabaixa e é uma nova tecnologia de exibição para o XBOX. Observe que os consoles XBOX Gen9 são compatíveis com os seguintes formatos de 120Hz.

* 1920x1080p 120Hz
* 2560x1440p 120Hz
* 3840x2160p 120Hz

<a id="how-to-enable" />

## Como habilitar

Para habilitar, acesse Configurações -> Geral -> Opções de TV e exibição. Nesse menu, você pode alterar a Taxa de Atualização (selecione: 120Hz). Certifique-se de que as configurações corretas estejam habilitadas na sua TV; consulte o manual da TV para identificar a configuração. Use um cabo HDMI 2.1 Ultra-High-Speed (necessário para 4k 120Hz), fornecido com o seu XBOX Series X Dev Kit. Além disso, atualize a TV para o firmware mais recente e conecte o kit diretamente à TV.

<a id="recommended-displays" />

## Telas recomendadas para desenvolvimento em 120Hz

As seguintes televisões recomendadas são compatíveis com 4K120Hz:

* TVs OLED LG C9 ou CX (anos-modelo 2019 ou 2020)
* Samsung Q900R(2019) ou Q80T/Q90T(2020)

É altamente recomendável usar uma das televisões acima em vez de um monitor.

<a id="display-supports" />

## Como descobrir se sua tela é compatível com 120Hz

Para verificar se sua TV é compatível com 4K120Hz, acesse Configurações -> Geral -> Opções de TV e exibição -> Detalhes da TV 4K. Sua TV é compatível com 4K120Hz se houver marcas de seleção verdes ao lado de:

* Em Resolução: "Your TV setup support 4K UHD at 120Hz"
* Em Jogos: "Your TV setup supports up to 4k native at 120fps"
  * Para XBOX Series X: "Your TV setup supports up to 4k native at 120fps"
  * Para XBOX Series S: ""Your TV setup supports up to 1440p native at 120fps"

Para verificar se você configurou o 120Hz corretamente, execute os [exemplos relevantes](#relevant-samples).

<a id="calling-pattern" />

## Padrão de chamada

O código a seguir precisa estar nesta ordem:

* [XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) \[Omita esta etapa em títulos somente SDR]
* [GetDisplayModeListX](/pt-BR/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist)
* [SetFrameIntervalX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_setframeintervalx)
* [ScheduleFrameEventX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_scheduleframeeventx)

Primeiro, chame [IDXGIOutput:XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode), que tenta habilitar o modo HDR da tela. Ele permite que o título especifique uma preferência entre HDR ou taxa de atualização de 120Hz caso a tela não seja compatível com ambos simultaneamente. O título pode alterar a preferência a qualquer momento chamando a função novamente. Observe que isso pode alterar os resultados de [IDXGIOutput:GetDisplayModeListX](/pt-BR/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist), o que implica uma atualização dos intervalos de quadro compatíveis.

Em segundo lugar, chame [IDXGIOutput:GetDisplayModeListX](/pt-BR/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist). Essa API foi projetada para uso por títulos que desejam verificar se a tela é compatível com 120Hz. Ela deve ser chamada duas vezes: uma para obter o número de modos disponíveis e a segunda para obter as descrições dos modos.

Em terceiro lugar, chame [ID3D12Device:SetFrameIntervalX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_setframeintervalx), que define o intervalo de quadro em microssegundos e o período de quadro em número de intervalos, que juntos determinam a duração do início do quadro até a apresentação do quadro. O intervalo de quadro selecionado deve ser compatível com a tela, o que é consultado usando [IDXGIOutput:GetDisplayModeListX](/pt-BR/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist).

<Note>
  Alternar entre modos é uma experiência disruptiva, pois a tela ficará em branco por vários segundos enquanto se sincroniza com o novo formato de vídeo. Por isso, o título deve estar atento a quando e onde a mudança de modo é invocada.
</Note>

<a id="older-displays" />

## HDR vs. 120Hz em telas mais antigas

Algumas telas mais antigas são compatíveis com HDR e 120Hz, mas não ao mesmo tempo, devido às restrições do HDMI 2.0. [IDXGIOutput:XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) tem um parâmetro de preferência chamado [XDisplayHdrModePreference](/pt-BR/reference/system/xdisplay/enums/xdisplayhdrmodepreference), usado para favorecer o HDR ou uma taxa de quadros aprimorada de até 120Hz em TVs que não são compatíveis com ambos simultaneamente. Consulte [XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) para entender quando usar PreferHdr ou PreferRefreshRate.

Exemplo: digamos que a tela do usuário seja compatível com 4k60 e com 120Hz em uma resolução mais baixa. Ela também é compatível com HDR, mas não simultaneamente com 120Hz. Quando o usuário entrar em uma experiência de 120Hz, chame  [IDXGIOutput:XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) com o parâmetro de preferência PreferRefreshRate para exibir em 1440p 120Hz sem HDR. Quando o usuário sair da experiência, chame  [IDXGIOutput:XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) com o parâmetro de preferência PreferHdr, o que ativará o HDR e retornará a tela para 4k60.

Um cenário comum do consumidor será: as configurações do console estão em algo como 4K 60Hz HDR, o jogo é iniciado, o consumidor percebe que o título pode oferecer 120Hz, pressiona o botão XBOX no controle para ir às configurações, altera as configurações do console para 120Hz e volta ao título. Pode ser útil para um título oferecer uma maneira rápida de o jogador acessar as configurações de TV do console. O código a seguir leva você diretamente às configurações de TV do console.

```cpp theme={null}
#include <XLauncher.h>

XLaunchUri(nullptr, "settings://videooutput");
```

<a id="forty-fps" />

## 40fps

Se uma tela for compatível com 120Hz, um título também poderá renderizar a 40fps. Nesse cenário, o sistema transmite o mesmo quadro três vezes em intervalos de 120Hz. Essa é uma boa opção para jogos que não conseguem manter 60fps, mas que renderizam com segurança muito acima de 30fps. Obviamente, 40fps será exibido mais rapidamente do que 30fps, mas também há uma melhoria de 8,3 ms na latência. Se o título quiser dar suporte a 40fps, é recomendável usar [PreferRefreshRate](/pt-BR/reference/system/xdisplay/enums/xdisplayhdrmodepreference) ao chamar [IDXGIOutput:XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode).

<a id="suspend-and-resume" />

## Suspensão e retomada

No cenário comum do consumidor descrito acima, é muito provável que os modos de vídeo mudem enquanto o título estiver suspenso ou restrito; portanto, o título precisa tratar corretamente essa mudança de modo de vídeo.

API de suspensão/retomada: RegisterAppStateChangeNotification API de restrito/irrestrito: RegisterAppConstrainedChangeNotification

O código detalhado em [Padrão de chamada](#calling-pattern) precisa estar nas funções Resume e Unconstrain do título, e especificamente nessa ordem.

<a id="relevant-samples" />

## Exemplos relevantes

Siga as instruções em [Exemplos do Microsoft Game Development Kit](/pt-BR/home/setup-install/samples) para baixar os exemplos NDA do GDK. O exemplo Simple120Hz demonstra os conceitos básicos de renderização em várias taxas de atualização, e o ResponsivenessSample mostra como fazer renderização de baixa latência.

## Confira também

[ID3D12Device::SetFrameIntervalX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_setframeintervalx) [IDXGIOutput:XDisplayTryEnableHdrMode](/pt-BR/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) [GetDisplayModeListX](/pt-BR/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist) [Suporte a HDR](/pt-BR/build/core-features/graphics/overviews/hdr-support) [Visão geral dos gráficos](/pt-BR/build/core-features/graphics/overviews/graphics)


## Related topics

- [XDisplayTryEnableHdrMode](/reference/system/xdisplay/functions/xdisplaytryenablehdrmode.md)
- [XDisplayHdrModePreference](/ko/reference/system/xdisplay/enums/xdisplayhdrmodepreference.md)
- [GDKX로 첫 콘솔 타이틀 빌드 및 실행](/ko/home/build-first-title/first-console-title-walkthrough.md)
- [Gears of War: Reloaded case study](/build/game-principles/sustainability/case-studies/case-studies-gears-of-war-reloaded.md)
- [Caso práctico de Gears of War: Reloaded](/es/build/game-principles/sustainability/case-studies/case-studies-gears-of-war-reloaded.md)
