Compartilhar via


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

A função Present notifica o driver de exibição do modo de usuário de que um aplicativo concluiu a renderização e solicita que o driver exiba a superfície de origem copiando ou invertendo ou que o driver execute uma operação de preenchimento de cores.

Sintaxe

PFND3DDDI_PRESENT Pfnd3dddiPresent;

HRESULT Pfnd3dddiPresent(
  HANDLE hDevice,
  const D3DDDIARG_PRESENT *unnamedParam2
)
{...}

Parâmetros

hDevice

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

unnamedParam2

pData [in]

Um ponteiro para uma estrutura D3DDDIARG_PRESENT que descreve o recurso a ser exibido.

Retornar valor

Present retorna um dos seguintes valores:

Código de retorno Descrição
S_OK O recurso é exibido com êxito.
E_OUTOFMEMORY O presente não pôde alocar a memória necessária para que ela fosse concluída.

Comentários

O runtime do Microsoft Direct3D chama a função Present do driver de exibição no modo de usuário para notificar o driver de exibição do modo de usuário de que um aplicativo terminou a renderização e solicitar que o driver exiba a superfície de origem ou que o driver execute uma operação de preenchimento de cores. Se o membro hSrcResource da estrutura D3DDDIARG_PRESENT para a qual o parâmetro pData aponta não for NULL, Apresentar solicitará que o driver de exibição do modo de usuário exiba um novo conteúdo na tela; se hSrcResource for NULL, Apresentar solicitações para que o driver de exibição do modo de usuário execute uma operação de preenchimento de cores na tela.

Se o membro hDstResource da estrutura D3DDDIARG_PRESENT for NULL, a superfície de destino será desconhecida. Além disso, a superfície de destino e uma lista de retângulos de recorte são determinados no modo kernel antes de enviar o fluxo de comando de hardware por meio de DMA para o processador de gráficos.

Como resultado, o driver de exibição do modo de usuário não pode gerar instruções de hardware para executar a operação atual. Essas instruções de hardware devem ser geradas pelo driver de miniporta de exibição. No entanto, quando o membro hSrcResource do D3DDDIARG_PRESENT não é NULL, o driver de exibição no modo de usuário deve derivar o identificador de alocação para a superfície de origem e inserir esse identificador no membro hSrcAllocation da estrutura D3DDDICB_PRESENT em uma chamada para a função pfnPresentCb . O driver de miniporta de exibição pode gerar com êxito as instruções de hardware. O driver de exibição do modo de usuário normalmente deriva o identificador de alocação das informações de recurso na estrutura D3DDDIARG_PRESENT .

Se o membro hDstResource do D3DDDIARG_PRESENT não for NULL, a superfície de destino do presente será conhecida e o driver de exibição do modo de usuário deverá preencher o membro hDstAllocation de D3DDDICB_PRESENT com o identificador de alocação correspondente.

Se um driver de exibição no modo de usuário expor uma versão DDI de menos de 0x0000000C (o driver retornará esse valor no membro DriverVersion da estrutura D3D10DDIARG_OPENADAPTER em uma chamada para a função OpenAdapter do driver), o runtime do Direct3D primeiro chamará a função Flush do driver de exibição no modo de usuário para enviar quaisquer comandos de hardware pendentes no buffer de comando antes que o runtime chame a função Present do driver de exibição no modo de usuário. Dessa forma, a função Present do driver de exibição no modo de usuário é serializada com operações de renderização (ou seja, chamadas para a função pfnRenderCb ). Se um driver de exibição no modo de usuário expor uma versão DDI de 0x0000000C ou superior e o aplicativo de chamada for executado no modo de janela, o runtime também chamará Flush antes de chamar Present. Se um driver de exibição no modo de usuário expor uma versão DDI de 0x0000000C ou superior e o aplicativo de chamada for executado no modo de tela inteira, o runtime não chamará Flush antes de chamar Present. Esse comportamento permite que os drivers que implementam seus próprios threadings enfileiram chamadas presentes. Um driver que expõe uma versão DDI de 0x0000000C ou superior deve chamar pfnRenderCb para liberar internamente quaisquer buffers de comando pendentes antes que o driver chame a função pfnPresentCb .

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

D3DDDIARG_PRESENT

D3DDDI_DEVICEFUNCS

DxgkDdiPresent

DxgkDdiRender

Liberar

pfnRenderCb