Compartir a través de


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

Cambie el siguiente búfer de la cadena de intercambio con el búfer frontal.

Sintaxis

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*

Puntero a una estructura RECT que indica la región de la superficie de origen que se va a copiar en las coordenadas del cliente de la ventana. Solo se aplica cuando se creó la cadena de intercambio con la marca D3DSWAPEFFECT_COPY . Si es NULL, se presenta toda la superficie de origen. Si el rectángulo supera la superficie de origen, se recorta en la superficie de origen.

[in] pDestRect

Tipo: const RECT*

Puntero a la estructura RECT que indica la región de destino en la superficie de destino en las coordenadas del cliente de ventana. Solo se aplica cuando se creó la cadena de intercambio con la marca D3DSWAPEFFECT_COPY . Si es NULL, se rellena todo el área de cliente. Si el rectángulo supera el área de cliente de destino, se recorta en el área de cliente de destino.

[in] hDestWindowOverride

Tipo: HWND

Puntero a una ventana de destino cuyo área de cliente se toma como destino para esta presentación. Si este valor es NULL, el runtime usa el miembro hDeviceWindow de D3DPRESENT_PARAMETERS para la presentación.

Nota Si crea una cadena de intercambio con D3DSWAPEFFECT_FLIPEX, debe pasar NULL a hDestWindowOverride.
 

[in] pDirtyRegion

Tipo: const RGNDATA*

Puntero a una estructura RGNDATA que indica el conjunto más pequeño de píxeles que se deben transferir. Este valor debe ser NULL a menos que se haya creado la cadena de intercambio con la marca D3DSWAPEFFECT_COPY . Para obtener más información sobre las cadenas de intercambio, vea Voltear superficies (Direct3D 9).

Si este valor no es NULL, la región contenida se expresa en coordenadas de búfer de reserva. El método tiene en cuenta estos rectángulos al optimizar la presentación copiando solo los píxeles dentro de la región o un conjunto de rectángulos expandidos de forma adecuada. Se trata de una ayuda solo para la optimización y la aplicación no debe depender de que la región se copie exactamente. La implementación puede elegir copiar todo el rectángulo de origen.

[in] dwFlags

Tipo: DWORD

Permite a la aplicación solicitar que el método devuelva inmediatamente cuando el controlador informa de que no puede programar una presentación. Los valores válidos son 0 o cualquier combinación de marcas de D3DPRESENT .

  • Si dwFlags = 0, este método se comporta como hizo antes de Direct3D 9. Presente girará hasta que el hardware esté libre, sin devolver un error.
  • Si dwFlags = D3DPRESENT_DONOTFLIP se llama al controlador de pantalla con el búfer frontal como la superficie de origen y de destino. El controlador responde mediante la programación de una sincronización de fotogramas, pero no cambia la superficie mostrada. Esta marca solo está disponible en modo de pantalla completa o cuando se usa D3DSWAPEFFECT_FLIPEX en modo de ventana.
  • Si dwFlags = D3DPRESENT_DONOTWAIT y el hardware está ocupado procesando o esperando un intervalo de sincronización vertical, el método devolverá D3DERR_WASSTILLDRAWING.
  • Si dwFlags = D3DPRESENT_FORCEIMMEDIATE, D3DPRESENT_INTERVAL_IMMEDIATE se aplica en esta llamada presente. Esta marca solo se puede especificar al usar D3DSWAPEFFECT_FLIPEX. Este comportamiento es el mismo para los modos de pantalla completa y ventana.
  • Si dwFlags = D3DPRESENT_LINEAR_CONTENT, la corrección gamma se realiza desde el espacio lineal a sRGB para las cadenas de intercambio con ventanas. Esta marca surtirá efecto solo cuando el controlador exponga D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (consulte Gamma (Direct3D 9)).

Valor devuelto

Tipo: HRESULT

Entre los valores devueltos posibles se incluyen: S_OK, D3DERR_DEVICELOST, D3DERR_DEVICEHUNG, D3DERR_DEVICEREMOVED o D3DERR_OUTOFVIDEOMEMORY (consulte D3DERR). Consulte Cambios de comportamiento de dispositivos perdidos para obtener más información sobre los dispositivos perdidos, bloqueados y eliminados.

Diferencias entre Direct3D 9 y Direct3D 9Ex:

D3DSWAPEFFECT_FLIPEX solo está disponible en Direct3D9Ex que se ejecuta en Windows 7 (o en un sistema operativo más actual).

Comentarios

Al igual que el método IDirect3DDevice9::P resent , PresentEx agrega un parámetro dwflags.

Cuando se crea la cadena de intercambio con D3DSWAPEFFECT_FLIPEX marca, los valores pSourceRect, pDestRect y pDirtyRegion deben establecerse en NULL.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9.h
Library D3D9.lib

Consulte también

IDirect3DDevice9Ex