Método IDXGISwapChain::P resent (dxgi.h)

Apresenta uma imagem renderizada para o usuário.

Sintaxe

HRESULT Present(
  UINT SyncInterval,
  UINT Flags
);

Parâmetros

SyncInterval

Tipo: UINT

Um inteiro que especifica como sincronizar a apresentação de um quadro com o branco vertical.

Para o modelo de transferência de bloco de bits (bitblt) (DXGI_SWAP_EFFECT_DISCARD ou DXGI_SWAP_EFFECT_SEQUENTIAL), os valores são:

  • 0 – A apresentação ocorre imediatamente, não há sincronização.
  • 1 a 4 – Sincronizar a apresentação após o nth vertical blank.
Para o modelo de inversão (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL), os valores são:
  • 0 – Cancele o tempo restante no quadro apresentado anteriormente e descarte esse quadro se um quadro mais recente estiver na fila.
  • 1 a 4 – Sincronizar a apresentação para pelo menos n espaços em branco verticais.
Para obter um exemplo que mostra como os valores de intervalo de sincronização afetam uma fila de apresentação de inversão, consulte Comentários.

Se a região de atualização atingir mais de uma saída (cada uma representada por IDXGIOutput), Present executará a sincronização com a saída que contém o maior subtângulo da área de cliente da janela de destino.

Flags

Tipo: UINT

Um valor inteiro que contém opções de apresentação de cadeia de troca. Essas opções são definidas pelas constantes DXGI_PRESENT .

Retornar valor

Tipo: HRESULT

Os valores retornados possíveis incluem: S_OK, DXGI_ERROR_DEVICE_RESET ou DXGI_ERROR_DEVICE_REMOVED (consulte DXGI_ERROR), DXGI_STATUS_OCCLUDED (consulte DXGI_STATUS) ou D3DDDIERR_DEVICEREMOVED.

Nota O método Present pode retornar DXGI_ERROR_DEVICE_REMOVED ou D3DDDIERR_DEVICEREMOVED se um cartão de vídeo tiver sido fisicamente removido do computador ou ocorreu uma atualização do driver para o vídeo cartão.
 

Comentários

A partir do Direct3D 11.1, considere usar IDXGISwapChain1::P resent1 porque você pode usar retângulos sujo e o retângulo de rolagem na apresentação da cadeia de troca e, como tal, usar menos largura de banda de memória e, como resultado, menos energia do sistema. Para obter mais informações sobre como usar retângulos sujo e o retângulo de rolagem na apresentação da cadeia de troca, consulte Usando retângulos de sujo e o retângulo de rolagem na apresentação da cadeia de troca.

Para obter o melhor desempenho ao inverter buffers de cadeia de troca em um aplicativo de tela inteira, consulte Dicas de desempenho de aplicativo de tela inteira.

Como chamar Present pode fazer com que o thread de renderização aguarde no thread de bomba de mensagem, tenha cuidado ao chamar esse método em um aplicativo que usa vários threads. Para obter mais detalhes, consulte Considerações sobre multithreading.

Diferenças entre o Direct3D 9 e o Direct3D 10:

Especificar DXGI_PRESENT_TEST no parâmetro Flags é análogo a IDirect3DDevice9::TestCooperativeLevel no Direct3D 9.

Para cadeias de troca de modelo de apresentação invertida que você cria com o DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL ou DXGI_SWAP_EFFECT_DISCARD conjunto de valores, uma apresentação bem-sucedida desvinca o buffer 0 (geralmente definido por OMSetRenderTargets) do pipeline gráfico, exceto quando você passa o sinalizador DXGI_PRESENT_DO_NOT_SEQUENCE no parâmetro Flags .

Para obter informações sobre como os valores de dados mudam quando você apresenta conteúdo para a tela, consulte Convertendo dados para o espaço de cores.

Inverter a fila do modelo de apresentação

Suponha que os quadros a seguir com valores de intervalo de sincronização sejam enfileirados do mais antigo (A) para o mais recente (E) antes de chamar Present.

R: 3, B: 0, C: 0, D: 1, E: 0

Quando você chama Presente, o runtime mostra o quadro A para apenas um intervalo vertical em branco. O runtime termina o quadro A mais cedo devido ao intervalo de sincronização 0 no quadro B. Em seguida, o runtime mostra o quadro D para um intervalo vertical em branco e, em seguida, enquadra E até que você envie uma nova apresentação. O runtime descarta os quadros B e C.

Exibições de taxa de atualização variável

É um requisito de exibição de taxa de atualização variável que o tearing está habilitado. O método CheckFeatureSupport pode ser usado para determinar se esse recurso está disponível e, para definir os sinalizadores necessários, consulte as descrições de DXGI_PRESENT_ALLOW_TEARING e DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING e Exibições de taxa de atualização variável.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho dxgi.h
Biblioteca DXGI.lib

Confira também

IDXGISwapChain