Skip to main content
Estabelece a duração do intervalo e o período de um quadro.

Sintaxe

Parâmetros

pOutputSyncTarget   _In_opt_
Tipo: IDXGIOutput*
Uma interface de saída do adaptador que identifica a tela cuja taxa de atualização e temporização devem ser usadas como base de sincronização para o agendamento de quadros. Para usar o adaptador padrão, passe null. LengthInMicroseconds   _In_
Tipo: UINT
Duração do intervalo do quadro, em microssegundos. A duração define a frequência com que os quadros serão apresentados para exibição. PeriodInIntervals   _In_
Tipo: UINT
Período do quadro, em intervalos. O período define o número de intervalos desde a origem de um quadro até o momento em que ele é apresentado para exibição. O período é baseado na profundidade desejada do pipeline de quadros: ou seja, quanto a renderização da CPU pode se adiantar em relação à exibição do quadro. Flags   _In_
Tipo: D3D12XBOX_FRAME_INTERVAL_FLAGS
Sinalizadores usados para fornecer controle adicional sobre o intervalo estabelecido. Para operação normal, esse sinalizador deve ser sempre definido como D3D12XBOX_FRAME_INTERVAL_FLAG_NONE. Para suporte a 60FPS+, o sinalizador D3D12XBOX_FRAME_INTERVAL_FLAG_60FPS_PLUS pode ser usado.

Valor retornado

Tipo: HRESULT Código de êxito ou erro HRESULT. Retorna S_FALSE para indicar que a chamada foi bem-sucedida, mas o novo intervalo de quadro ainda não está em vigor. Ele entrará em vigor na próxima chamada a ScheduleFrameEventX, que deve ter Type igual a D3D12XBOX_FRAME_EVENT_ORIGIN. Retorna E_INVALIDARG para valores de intervalo, período ou sinalizador sem suporte.

Comentários

A duração do intervalo do quadro determina a frequência de apresentação e especifica a taxa na qual os quadros serão renderizados e enviados à tela. As durações de intervalo mais comuns incluem as seguintes definições de pré-processador:
Durações de intervalo de quadro que são múltiplas de 16.666 microssegundos, como 60 Hz e 30 Hz, são sempre permitidas para uso com todas as telas e configurações. No entanto, durações de intervalo de quadro que são múltiplas de 8.333 microssegundos, como 120 Hz e 40 Hz, só devem ser usadas quando a tela e o console oferecem suporte a essa configuração. Isso pode ser verificado usando o método IDXGIOutput::GetDisplayModeList quando o aplicativo é iniciado. Além disso, durações de intervalo que estabelecem as taxas de atualização de 20 Hz e 15 Hz também são permitidas. Títulos que desejam definir como meta uma duração de intervalo de quadro entre 60 Hz e 120 Hz podem fazer isso com o sinalizador D3D12XBOX_FRAME_INTERVAL_FLAG_60FPS_PLUS. Consulte D3D12XBOX_FRAME_INTERVAL_FLAGS para obter mais detalhes. As durações de intervalo de quadro são estabelecidas como múltiplos inteiros do intervalo de atualização da tela e são alinhadas aos limites de vblank. É por isso que a duração em microssegundos não é uma diretiva rígida que estabelece o tempo exato entre os intervalos; em vez disso, é um valor que comunica a duração de intervalo desejada. Quando estiver dentro de algum limite, ela será mapeada para o múltiplo mais próximo da taxa de atualização da tela. Por exemplo, uma duração de quadro definida de 33.333 microssegundos pode, na verdade, produzir uma duração de intervalo de 33.367 microssegundos se a taxa de atualização da tela for 29,97 Hz em vez de 30 Hz. No entanto, o intervalo definido será usado como base para agendar eventos de quadro (consulte ScheduleFrameEventX), em que o deslocamento em microssegundos é expresso em termos da duração fornecida a SetFrameIntervalX, e não como o valor para o qual essa duração foi mapeada internamente. Por exemplo, um deslocamento de tempo de origem agendado de 16.666 microssegundos usado com uma duração de intervalo definida de 33.333 microssegundos será convertido internamente em um deslocamento real de 16.684 microssegundos quando a taxa de atualização da tela for 29,97 Hz; isso preservará a intenção de agendar a origem na metade do quadro. O período do quadro (em intervalos) estabelece a duração máxima de um quadro desde sua origem até sua exibição, e pode ser definido como um valor entre 1 e 4, inclusive. Esse período é baseado na sobreposição esperada da renderização da CPU e da GPU e controla quando a CPU deve ser limitada com base no número de quadros em andamento. Um período de 1 indica que um quadro será iniciado e concluído dentro do mesmo intervalo; isso não levará mais do que LengthInMicroseconds. Um período de n indica que um quadro será iniciado em um intervalo de quadro e concluído n - 1 intervalos depois. Em termos de latência, um quadro geralmente será mantido com menos de PeriodInIntervals x LengthInMicroseconds microssegundos de latência entre seu início e o momento em que chega à tela, supondo que não haja vblanks perdidos. A duração de um intervalo de quadro e seu período servem para estabelecer um prazo de exibição para um quadro. Se o quadro não for concluído e apresentado para exibição até o fim do intervalo que ocorre PeriodInIntervals - 1 intervalos após sua origem, o quadro seguinte será limitado e não poderá começar até que o quadro perdido tenha sido apresentado e invertido para a tela. Isso é feito para evitar a introdução de intervalos adicionais de latência em casos de vblanks perdidos; quando um quadro perde seu prazo de apresentação, normalmente ele será mantido para exibição até o próximo vblank em que estiver pronto (para evitar tearing). Atrasar o início do próximo quadro na CPU pela mesma quantidade evita a amostragem de entrada cedo demais e preserva as garantias de latência estabelecidas pelo intervalo e pelo período de quadro definidos. As configurações iniciais do intervalo de quadro são aplicadas quando o evento de origem do quadro é agendado pela primeira vez. As atualizações subsequentes são processadas em pipeline com a apresentação, de modo que as alterações feitas dentro de um intervalo sejam aplicadas quando o próximo quadro apresentado for invertido para a tela.

Requisitos

Cabeçalho: d3d12_x.h Biblioteca: d3d12_x.lib Plataformas com suporte: família XBOX One

Confira também

IDXGIOutput
Last modified on October 6, 2026