estrutura DXGK_GDIARG_STRETCHBLT (d3dkmddi.h)
A estrutura DXGK_GDIARG_STRETCHBLT descreve as características de uma operação de transferência de bloco de bits (bitblt) acelerada por hardware GDI.
Sintaxe
typedef struct _DXGK_GDIARG_STRETCHBLT {
[in] RECT SrcRect;
[in] RECT DstRect;
[in] UINT DstAllocationIndex;
[in] UINT SrcAllocationIndex;
UINT NumSubRects;
[in] RECT *pSubRects;
union {
struct {
UINT Mode : 16;
UINT MirrorX : 1;
UINT MirrorY : 1;
};
[in] UINT Flags;
};
[in] UINT SrcPitch;
} DXGK_GDIARG_STRETCHBLT;
Membros
[in] SrcRect
Uma estrutura RECT que define a área retangular a ser copiada. Esse retângulo é especificado no sistema de coordenadas da superfície de origem e é definido por dois pontos: superior esquerdo e inferior direito. Os dois pontos que definem o retângulo são sempre bem ordenados.
O retângulo de origem nunca excederá os limites da superfície de origem, portanto, ele nunca sobrepõe a superfície de origem.
Esse retângulo é mapeado para o retângulo de destino definido por DstRect .
Para obter mais informações, consulte a seção Comentários.
[in] DstRect
Uma estrutura RECT que define a área retangular a ser modificada. Esse retângulo é especificado no sistema de coordenadas da superfície de destino e é definido por dois pontos: superior esquerdo e inferior direito. O retângulo é exclusivo para o canto inferior direito; ou seja, suas bordas inferior e direita não fazem parte da transferência de bloco de bits. Os dois pontos que definem o retângulo são sempre bem ordenados.
O retângulo de destino definido por DstRect pode exceder os limites da superfície de destino, mas os subtângulos não podem. Além disso, todos os sub-retângulos são garantidos para caber dentro da superfície de destino. Os subtângulos podem ser restringidos ainda mais por um retângulo delimitador menor que o retângulo de destino.
Para obter mais informações, consulte a seção Comentários.
[in] DstAllocationIndex
Um índice do elemento na lista de alocação que especifica a alocação referenciada pelo DstRect retângulo de destino.
[in] SrcAllocationIndex
Um índice do elemento na lista de alocação que especifica a alocação referenciada pelo retângulo de origem SrcRect.
NumSubRects
O número de sub-retângulos no espaço de superfície de destino delimitado pelo DstRect retângulo de destino.
[in] pSubRects
Um ponteiro para os sub-retângulos no espaço de superfície de destino delimitado pelo DstRect retângulo de destino.
[in] Mode
Especifica como os pixels de origem são combinados para produzir pixels de saída com base em se os seguintes valores definidos em wingdi.h estão definidos:
Valor | Significado |
---|---|
BLACKONWHITE | Em uma transferência de bloco de bits reduzida, os pixels devem ser combinados com uma operação AND booliana. Em uma transferência de bloco de bits alongada, os pixels devem ser replicados. |
WHITEONBLACK | Em uma transferência de bloco de bits reduzida, os pixels devem ser combinados com uma operação OR booliana. Em uma transferência de bloco de bits alongada, os pixels devem ser replicados. |
Esse tipo de operação será processado somente se o driver tiver definido o membro SupportMonoStretchBltModes na estrutura DXGK_PRESENTATIONCAPS.
[in] MirrorX
Especifica se a transferência de bloco de bits elástico será executada no modo espelho no xdirection. Esse tipo de operação será processado somente se o valor de MirrorX não for zero e o driver tiver definido o membro SupportMirrorStretchBlt na estrutura DXGK_PRESENTATIONCAPS.
[in] MirrorY
Especifica se a transferência de bloco de bits elástico será executada no modo espelho na direção y. Esse tipo de operação será processado somente se o valor de MirrorY não for zero e o driver tiver definido o membro SupportMirrorStretchBlt na estrutura DXGK_PRESENTATIONCAPS.
[in] Flags
Valor UINT opcional que pode ser usado para depurar o código do driver.
[in] SrcPitch
O tom da superfície de origem, em bytes.
Observações
As proporções de alongamento x e y são computadas respectivamente como as proporções dos tamanhos x e y dos membros DstRect e SrcRect membros.
O modo HALFTONE e os modos de STRETCH_HALFTONE definidos em wingdi.h nunca serão definidos no membro do modo. O modo COLORONCOLOR pode ser definido nas estruturas DXGK_GDIARG_ALPHABLEND e DXGK_GDIARG_TRANSPARENTBLT.
Quando sub-retângulos são transformados no espaço da superfície de origem, o resultado é garantido estar dentro da superfície de origem. A transformação das coordenadas de um sub-retângulo na superfície de destino para coordenadas na superfície de origem é definida pelas fórmulas a seguir, em que
- (Xd, Yd) é um ponto dentro do sub-retângulo
- (Xs, Ys) é um ponto dentro do retângulo de origem
float Ws = SrcRect.right - SrcRect.left;
float Wd = DstRect.right - DstRect.left;
int Xs = round((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left - 0.5)
OR
int Xs = truncate((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left)
float Hs = SrcRect.bottom - SrcRect.top;
float Hd = DstRect.bottom - DstRect.top;
int Ys = round((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top - 0.5)
OR
int Ys = truncate((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top)
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 7 |
cabeçalho | d3dkmddi.h (inclua D3dkmddi.h) |