PFND3DDDI_SETDISPLAYMODECB função de retorno de chamada (d3dumddi.h)

A função pfnSetDisplayModeCb define a alocação usada para verificar a exibição.

Sintaxe

PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;

HRESULT Pfnd3dddiSetdisplaymodecb(
  HANDLE hDevice,
  D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}

Parâmetros

hDevice

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

pData [in, out]

Um ponteiro para uma estrutura D3DDDICB_SETDISPLAYMODE que descreve a alocação usada para verificar.

Retornar valor

pfnSetDisplayModeCb retorna um dos seguintes valores:

Código de retorno Descrição
S_OK O modo de exibição foi definido com êxito.
E_INVALIDARG Os parâmetros foram validados e determinados como incorretos.
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT O driver de exibição do modo de usuário deve converter o formato da superfície associada à alocação que o membro hPrimaryAllocation de D3DDDICB_SETDISPLAYMODE especifica no atributo de formato que o PrivateDriverFormatAttributemember de D3DDDICB_SETDISPLAYMODE especifica. Em seguida, o driver deve chamar pfnSetDisplayModeCb novamente. O driver pode alocar uma nova alocação, executar uma conversão de bit-block transfer (bitblt) da superfície primária antiga para a nova e, em seguida, destruir o primário antigo, desde que o driver use o novo identificador de alocação para essa alocação para todas as operações subsequentes. O driver deve repetir esse processo até que pfnSetDisplayModeCb retorne um valor retornado diferente.

Essa função também pode retornar outros valores HRESULT.

Comentários

Depois que o runtime do Microsoft Direct3D chama a função SetDisplayMode ou SetDisplayModeDXGI do driver de exibição do modo de usuário para definir a superfície primária a ser verificada para a exibição, o driver de exibição do modo de usuário chama a função pfnSetDisplayModeCb para definir a alocação primária subjacente usada para verificação.

Nota Antes que o driver de exibição do modo de usuário chame pfnSetDisplayModeCb para definir um novo modo de exibição que usa um formato estendido, um método de amostragem múltipla ou ambos, o driver deve garantir que o modo de exibição GDI atual tenha a mesma resolução que o novo modo de exibição; caso contrário, pfnSetDisplayModeCb retornará E_INVALIDARG.
 

Direct3D Versão 11 Observação: Para obter mais informações sobre como o driver chama pfnSetDisplayModeCb, consulte Alterações do Direct3D 10.

Exemplos

O exemplo de código a seguir mostra como definir a alocação para verificação para a exibição.

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 com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho d3dumddi.h (inclua D3dumddi.h)

Confira também

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

Setdisplaymode

SetDisplayModeDXGI