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) |