PFND3DDDI_SETDISPLAYMODECB función de devolución de llamada (d3dumddi.h)
La función pfnSetDisplayModeCb establece la asignación que se usa para examinar la pantalla.
Sintaxis
PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;
HRESULT Pfnd3dddiSetdisplaymodecb(
HANDLE hDevice,
D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}
Parámetros
hDevice
Identificador del dispositivo de visualización (contexto de gráficos).
unnamedParam2
pData [in, out]
Puntero a una estructura de D3DDDICB_SETDISPLAYMODE que describe la asignación que se usa para examinar.
Valor devuelto
pfnSetDisplayModeCb devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
S_OK | El modo de presentación se estableció correctamente. |
E_INVALIDARG | Los parámetros se validaron y determinaron que son incorrectos. |
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT | El controlador de pantalla en modo de usuario debe convertir el formato de la superficie asociada a la asignación que el miembro hPrimaryAllocation de D3DDDICB_SETDISPLAYMODE especifica en el atributo de formato que especifica el miembro PrivateDriverFormatAttribute de D3DDDICB_SETDISPLAYMODE. A continuación, el controlador debe llamar a pfnSetDisplayModeCb de nuevo. El controlador podría asignar una nueva asignación, realizar una transferencia de bloque de bits de conversión (bitblt) desde la superficie principal antigua al nuevo y, a continuación, destruir la base principal anterior siempre que el controlador use el nuevo identificador de asignación para esta asignación para todas las operaciones posteriores. El controlador debe repetir este proceso hasta que pfnSetDisplayModeCb devuelva un valor devuelto diferente. |
Esta función también podría devolver otros valores HRESULT.
Comentarios
Después de que el tiempo de ejecución de Microsoft Direct3D llame a la función SetDisplayMode o SetDisplayModeDXGI del controlador de pantalla en modo de usuario para establecer la superficie principal que se va a examinar en la pantalla, el controlador de pantalla en modo de usuario llama a la función pfnSetDisplayModeCb para establecer la asignación principal subyacente que se usa para el examen.
Nota de Direct3D versión 11: Para obtener más información sobre cómo el controlador llama a pfnSetDisplayModeCb, consulta Cambios de Direct3D 10.
Ejemplos
En el ejemplo de código siguiente se muestra cómo establecer la asignación para examinarla en la pantalla.
HRESULT CD3DContext::SetDisplayMode(CONST D3DDDIARG_SETDISPLAYMODE* pSetDisplayMode) {
DWORD dwSrcSurf = ((DWORD)(DWORD_PTR)pSetDisplayMode->hResource) + pSetDisplayMode->SubResourceIndex;
HRESULT hr;
// Timestamp the source surface
m_RTbl[dwSrcSurf].m_qwBatch = m_qwBatch;
// Send the presentation request to the display miniport driver
D3DDDICB_SETDISPLAYMODE SetDisplayModeCBData = {0};
SetDisplayModeCBData.hPrimaryAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx,
dwSrcSurf);
hr = m_d3dCallbacks.pfnSetDisplayModeCb(m_hD3D, &SetDisplayModeCBData);
return (hr);
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Escritorio |
Encabezado | d3dumddi.h (incluya D3dumddi.h) |