Compartilhar via


Método IDirect3DDevice9Ex::P resentEx (d3d9.h)

Troque o próximo buffer da cadeia de troca pelo buffer frontal.

Sintaxe

HRESULT PresentEx(
  [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 uma estrutura RECT que indica a região na superfície de origem a ser copiada nas coordenadas do cliente da janela. Aplica-se somente quando a cadeia de troca foi criada com o sinalizador D3DSWAPEFFECT_COPY . Se FOR NULL, toda a superfície de origem será apresentada. Se o retângulo exceder a superfície de origem, ele será recortado na superfície de origem.

[in] pDestRect

Tipo: const RECT*

Ponteiro para a estrutura RECT que indica a região de destino na superfície de destino nas coordenadas do cliente da janela. Aplica-se somente quando a cadeia de troca foi criada com o sinalizador D3DSWAPEFFECT_COPY . Se FOR NULL, toda a área do cliente será preenchida. Se o retângulo exceder a área do cliente de destino, ele será recortado para a área do cliente de destino.

[in] hDestWindowOverride

Tipo: HWND

Ponteiro para uma janela de destino cuja área do cliente é tomada como o destino desta apresentação. Se esse valor for NULL, o runtime usará o membro hDeviceWindow de D3DPRESENT_PARAMETERS para a apresentação.

Nota Se você criar uma cadeia de troca com D3DSWAPEFFECT_FLIPEX, deverá passar NULL para hDestWindowOverride
 

[in] pDirtyRegion

Tipo: const RGNDATA*

Ponteiro para uma estrutura RGNDATA que indica o menor conjunto de pixels que precisam ser transferidos. Esse valor deve ser NULL , a menos que a cadeia de troca tenha sido criada com o sinalizador D3DSWAPEFFECT_COPY . Para obter mais informações sobre swapchains, 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. O 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 adequadamente expandido. 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 sinalizadores de D3DPRESENT .

  • Se dwFlags = 0, esse método se comportará como antes do Direct3D 9. Presente girará até que o hardware esteja livre, sem retornar um erro.
  • Se dwFlags = D3DPRESENT_DONOTFLIP o driver de exibição será chamado com o buffer frontal como a superfície de origem e de destino. O driver responde agendando uma sincronização de quadro, mas não alterando a superfície exibida. Esse sinalizador só está disponível no modo de tela inteira ou ao usar D3DSWAPEFFECT_FLIPEX no modo de janela.
  • 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_FORCEIMMEDIATE, D3DPRESENT_INTERVAL_IMMEDIATE será imposta nesta chamada Presente. Esse sinalizador só pode ser especificado ao usar D3DSWAPEFFECT_FLIPEX. Esse comportamento é o mesmo para modos em janelas e em tela inteira.
  • Se dwFlags = D3DPRESENT_LINEAR_CONTENT, a correção gama será executada de espaço linear a 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)).

Retornar valor

Tipo: HRESULT

Os valores retornados possíveis incluem: S_OK, D3DERR_DEVICELOST, D3DERR_DEVICEHUNG, D3DERR_DEVICEREMOVED ou D3DERR_OUTOFVIDEOMEMORY (consulte D3DERR). Consulte Alterações de comportamento de dispositivo perdidas para obter mais informações sobre dispositivos perdidos, suspensos e removidos.

Diferenças entre Direct3D 9 e Direct3D 9Ex:

D3DSWAPEFFECT_FLIPEX só está disponível no Direct3D9Ex em execução no Windows 7 (ou no sistema operacional mais atual).

Comentários

Semelhante ao Método IDirect3DDevice9::P resent , PresentEx adiciona um parâmetro dwflags.

Quando a cadeia de troca é criada com D3DSWAPEFFECT_FLIPEX sinalizador, os valores pSourceRect, pDestRect e pDirtyRegion devem ser definidos como NULL.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d9.h
Biblioteca D3D9.lib

Confira também

Idirect3ddevice9ex