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 especificado pelo ClearViewports é 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 de D3D10_DDI_VIEWPORT para os visores a serem definidos.

Retornar valor

Nenhum

Comentários

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

Os visores especificam a transformação pós-clipe 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 especificado por NumViewports e o número máximo de visores permitidos é necessário para conter todos os valores NULL ou não associados. O número especificado pelo parâmetro ClearViewports informa ao driver quantos visores o driver deve limpar para a operação atômica atual.

Se a chamada anterior para SetViewports passou 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 passará 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 de 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 libera valores float desnormalizados para zero.

O driver não deve encontrar nenhum erro, exceto para D3DDDIERR_DEVICEREMOVED. Portanto, se o driver passar qualquer 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 precisará 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
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 d3d10umddi.h (inclua D3d10umddi.h)

Confira também

D3D10DDI_DEVICEFUNCS

D3D10_DDI_VIEWPORT

pfnSetErrorCb