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 D3DDDICB_SETDISPLAYMODE que describe la asignación que se usa para examinar.

Valor devuelto

pfnSetDisplayModeCb devuelve uno de los siguientes valores:

código de retorno descripción
S_OK El modo de visualización se estableció correctamente.
E_INVALIDARG Los parámetros se validaron y determinaron que son incorrectos.
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT El controlador de visualización en modo de usuario debe convertir el formato de la superficie asociada a la asignación que especifica el miembro hPrimaryAllocation de D3DDDICB_SETDISPLAYMODE en el atributo de formato que especifica el privateDriverFormatAttributemember 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 principal antigua siempre y cuando 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 puede devolver otros valores HRESULT.

Observaciones

Una vez que el tiempo de ejecución de Microsoft Direct3D llama al controlador de pantalla en modo de usuario SetDisplayMode o función SetDisplayModeDXGI 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 Antes de que el controlador de pantalla en modo de usuario llame a pfnSetDisplayModeCb para establecer un nuevo modo de presentación que use un formato extendido, un método de muestreo múltiple o ambos, el controlador debe asegurarse de que el modo de visualización GDI actual tenga la misma resolución que el nuevo modo de presentación; De lo contrario, pfnSetDisplayModeCb devuelve E_INVALIDARG.
 

Direct3D versión 11 Nota: Para obtener más información sobre cómo llama el controlador pfnSetDisplayModeCb, vea Cambios de Direct3D 10.

Ejemplos

En el ejemplo de código siguiente se muestra cómo establecer la asignación para examinar 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 Valor
cliente mínimo admitido Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
de la plataforma de destino de Escritorio
encabezado de d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI