Método IDirect3DSwapChain9::P resent (d3d9helper.h)
Apresenta o conteúdo do próximo buffer na sequência de buffers traseiros pertencentes à cadeia de troca.
Sintaxe
HRESULT Present(
[in] const RECT *pSourceRect,
[in] const RECT *pDestRect,
[in] HWND hDestWindowOverride,
[in] const RGNDATA *pDirtyRegion,
[in] DWORD dwFlags
);
Parâmetros
[in] pSourceRect
Tipo: const RECT*
Ponteiro para o retângulo de origem (consulte RECT). Use NULL para apresentar toda a superfície. Esse valor deve ser NULL , a menos que a cadeia de troca tenha sido criada com D3DSWAPEFFECT_COPY. Se o retângulo exceder a superfície de origem, o retângulo será recortado na superfície de origem.
[in] pDestRect
Tipo: const RECT*
Ponteiro para o retângulo de destino nas coordenadas do cliente (consulte RECT). Esse valor deve ser NULL , a menos que a cadeia de troca tenha sido criada com D3DSWAPEFFECT_COPY. Use NULL para preencher toda a área do cliente. Se o retângulo exceder a área de cliente de destino, o retângulo será recortado para a área de cliente de destino.
[in] hDestWindowOverride
Tipo: HWND
Janela de destino cuja área de cliente é usada como destino para esta apresentação. Se esse valor for NULL, o runtime usará o membro hDeviceWindow de D3DPRESENT_PARAMETERS para a apresentação.
[in] pDirtyRegion
Tipo: const RGNDATA*
Esse valor deve ser NULL , a menos que a cadeia de troca tenha sido criada com D3DSWAPEFFECT_COPY. Consulte Inverter superfícies (Direct3D 9).
Se esse valor não for NULL, a região contida será expressa em coordenadas de buffer de fundo. Os retângulos dentro da região são o conjunto mínimo de pixels que precisam ser atualizados. Esse método leva esses retângulos em conta ao otimizar a apresentação copiando apenas os pixels dentro da região ou algum conjunto de retângulos expandido adequadamente. Isso é um auxílio apenas para otimização e o aplicativo não deve depender exatamente da região que está sendo copiada. A implementação pode optar por copiar todo o retângulo de origem.
[in] dwFlags
Tipo: DWORD
Permite que o aplicativo solicite que o método retorne imediatamente quando o driver relata que não pode agendar uma apresentação. Os valores válidos são 0 ou qualquer combinação de D3DPRESENT_DONOTWAIT ou D3DPRESENT_LINEAR_CONTENT.
- Se dwFlags = 0, esse método se comportará como antes do Direct3D 9. O presente girará até que o hardware seja gratuito, sem retornar um erro.
- Se dwFlags = D3DPRESENT_DONOTWAIT e o hardware estiver ocupado processando ou aguardando um intervalo de sincronização vertical, o método retornará D3DERR_WASSTILLDRAWING.
- Se dwFlags = D3DPRESENT_LINEAR_CONTENT, a correção gama será executada de espaço linear para sRGB para cadeias de troca em janelas. Esse sinalizador entrará em vigor somente quando o driver expor D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (consulte Gama (Direct3D 9)). Os aplicativos devem especificar esse sinalizador se o formato backbuffer for um ponto flutuante de 16 bits para corresponder o modo em janela presente ao comportamento gama de tela inteira.
Retornar valor
Tipo: HRESULT
Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser um dos seguintes: D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY E_OUTOFMEMORY.
Comentários
O método Present é um atalho para Present. O presente foi atualizado para usar um sinalizador, permitindo que o aplicativo solicite que o método retorne imediatamente quando o driver relatar que não pode agendar uma apresentação.
Se necessário, uma operação de alongamento é aplicada para transferir os pixels dentro do retângulo de origem para o retângulo de destino na área do cliente da janela de destino.
O presente falhará se for chamado entre os pares BeginScene e EndScene , a menos que o destino de renderização não seja o destino de renderização atual (como o buffer de fundo obtido com a criação de uma cadeia de troca adicional). Esse é um novo comportamento para o Direct3D 9.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d9helper.h (inclua D3D9.h) |
Biblioteca | D3D9.lib |