Compartilhar via


PFND3D10DDI_SETVIEWPORTS função de retorno de chamada (d3d10umddi.h)

A função SetViewports define visores.

Sintaxe

PFND3D10DDI_SETVIEWPORTS Pfnd3d10ddiSetviewports;

void Pfnd3d10ddiSetviewports(
       D3D10DDI_HDEVICE unnamedParam1,
  [in] UINT NumViewports,
  [in] UINT ClearViewports,
       const D3D10_DDI_VIEWPORT *unnamedParam4
)
{...}

Parâmetros

unnamedParam1

hDevice [in]

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

[in] NumViewports

O número total de visores especificados pelo parâmetro pViewports.

[in] ClearViewports

O número de visores após o número de visores que NumViewports especifica a ser definido como NULL. Esse número representa a diferença entre o número anterior de visores (ou seja, quando o runtime do Microsoft Direct3D anteriormente chamado SetViewports) e o novo número de visores.

Observe que o número que ClearViewports especifica é apenas um auxílio de otimização porque o driver de exibição no modo de usuário pode calcular esse número.

unnamedParam4

pViewports [in]

Uma matriz de estruturas D3D10_DDI_VIEWPORT para os visores a serem definidos.

Valor de retorno

Nenhum

Observações

O driver pode usar a função de retorno de chamada pfnSetErrorCb para definir um código de erro.

Os visores especificam o clipe de postagem de transformação para os recursos de destino de renderização de saída e estêncil de profundidade. Todos os visores que não são definidos em uma chamada para SetViewports são definidos como NULL. Um visor NULL é definido da seguinte maneira.

struct D3D10_DDI_VIEWPORT {
  FLOAT  TopLeftX = NaN;
  FLOAT  TopLeftY = NaN;
  FLOAT  Width = NaN;
  FLOAT  Height = NaN;
  FLOAT  MinDepth = NaN;
  FLOAT  MaxDepth = NaN;
} D3D10_DDI_VIEWPORT;</pre>

Essa definição implica que o visor está desativado.

O driver de exibição do modo de usuário deve definir todos os visores atomicamente como uma operação.

Embora o parâmetro NumViewports especifique o número de visores na matriz especificada pelo parâmetro pViewports, alguns valores na matriz podem ser null.

O intervalo de visores entre o número que NumViewports especifica e o número máximo de visores permitidos é necessário para conter todos os valores NULL ou não associados. O número que o parâmetro ClearViewports especifica informa o driver sobre quantos visores o driver deve limpar para a operação atômica atual.

Se a chamada anterior para SetViewports passado um valor de 2 no parâmetro NumViewports e a chamada atual para SetViewports passará um valor de 4 em NumViewports, a chamada atual para SetViewports também passa um valor de 0 no parâmetro ClearViewports. Se a próxima chamada sucessiva para SetViewports passar um valor de 1 em NumViewports, a chamada sucessiva também passará um valor de 3 (4 - 1) em ClearViewports.

Quando o valor de visores claros é solicitado durante operações de consulta no modo de usuário, o valor é a diferença entre o número máximo de visores e o valor dos visores.

SetViewports garante que os visores sejam válidos. Ou seja, SetViewports garante que as dimensões dos visores estejam dentro do intervalo (D3D10_VIEWPORT_BOUNDS_MIN, D3D10_VIEWPORT_BOUNDS_MAX, D3D10_MIN_DEPTH e D3D10_MAX_DEPTH). SetViewports também garante que nenhuma coordenada seja NaN e libere valores flutuantes desnormalizados para zero.

O driver não deve encontrar nenhum erro, exceto por D3DDDIERR_DEVICEREMOVED. Portanto, se o driver passar algum erro, exceto por D3DDDIERR_DEVICEREMOVED, em uma chamada para a função pfnSetErrorCb, o runtime do Microsoft Direct3D determinará que o erro é crítico. Mesmo que o dispositivo tenha sido removido, o driver não será necessário para retornar D3DDDIERR_DEVICEREMOVED; no entanto, se a remoção do dispositivo interferiu na operação de SetViewports (o que normalmente não deve acontecer), o driver poderá retornar D3DDDIERR_DEVICEREMOVED.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
da Plataforma de Destino Área de trabalho
cabeçalho d3d10umddi.h (inclua D3d10umddi.h)

Consulte também

D3D10DDI_DEVICEFUNCS

D3D10_DDI_VIEWPORT

pfnSetErrorCb