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 sub-retângulos não podem. Além disso, todos os sub-retângulos têm a garantia de caber dentro da superfície de destino. Os sub-retâ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 retângulo de destino DstRect .
[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 retângulo de destino DstRect .
[in] pSubRects
Um ponteiro para os sub-retângulos no espaço de superfície de destino delimitado pelo retângulo de destino DstRect .
[in] Mode
Especifica como os pixels de origem são combinados para produzir pixels de saída com base nos seguintes valores definidos em Wingdi.h :
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 de alongamento, 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 de alongamento, 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.
Comentários
As proporções de alongamento x e y são calculadas respectivamente como as proporções dos tamanhos x e y dos membros DstRect e SrcRect .
Os modos HALFTONE e STRETCH_HALFTONE definidos em Wingdi.h nunca serão definidos no membro Mode . 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 |
---|---|
Cliente mínimo com suporte | Windows 7 |
Cabeçalho | d3dkmddi.h (inclua D3dkmddi.h) |