structure DXGK_GDIARG_ALPHABLEND (d3dkmddi.h)

La structure DXGK_GDIARG_ALPHABLEND décrit les caractéristiques d’une opération de fusion alpha accélérée par le matériel GDI.

Syntaxe

typedef struct _DXGK_GDIARG_ALPHABLEND {
  [in] RECT    SrcRect;
  [in] RECT    DstRect;
  [in] UINT    SrcAllocationIndex;
  [in] UINT    DstAllocationIndex;
  [in] UINT    NumSubRects;
  [in] RECT    *pSubRects;
  [in] BYTE    SourceConstantAlpha;
  [in] BOOLEAN SourceHasAlpha;
  [in] UINT    SrcPitch;
} DXGK_GDIARG_ALPHABLEND;

Membres

[in] SrcRect

Structure RECT qui définit la zone rectangulaire à copier. Ce rectangle source est spécifié dans le système de coordonnées de la surface source et est défini par deux points : en haut à gauche et en bas à droite. Les deux points qui définissent le rectangle sont toujours bien ordonnés. Ce rectangle ne dépassera jamais les limites de la surface source, de sorte qu’il ne dépassera jamais la surface source. Ce rectangle est mappé au rectangle de destination défini par DstRect. Pour plus d'informations, consultez la section Notes.

[in] DstRect

Structure RECT qui définit la zone rectangulaire à modifier. Ce rectangle est spécifié dans le système de coordonnées de la surface de destination et est défini par deux points : en haut à gauche et en bas à droite. Le rectangle est exclusif en bas à droite ; autrement dit, ses bords inférieur et droit ne font pas partie du transfert de bloc de bits. Les deux points qui définissent le rectangle sont toujours bien ordonnés.

Le rectangle de destination défini par DstRect peut dépasser les limites de la surface de destination, mais les sous-rectangles ne le peuvent pas. En outre, tous les sous-rectangles sont garantis pour s’adapter à l’intérieur de la surface de destination. Les sous-rectangles peuvent être limités davantage par un rectangle englobant plus petit que le rectangle de destination.

[in] SrcAllocationIndex

Index de l’élément dans la liste d’allocation qui spécifie l’allocation référencée par le rectangle source SrcRect .

[in] DstAllocationIndex

Index de l’élément dans la liste d’allocation qui spécifie l’allocation référencée par le rectangle de destination DstRect .

[in] NumSubRects

Nombre de sous-rectangles dans l’espace de surface de destination délimité par le rectangle de destination DstRect .

[in] pSubRects

Pointeur vers les sous-rectangles dans l’espace de surface de destination.

[in] SourceConstantAlpha

Facteur de fusion constant à appliquer à l’ensemble de la surface source. Cette valeur se situe dans la plage de [0,255], où 0 est complètement transparent et 255 est complètement opaque.

[in] SourceHasAlpha

Définit si la surface est supposée avoir un canal alpha. Si la valeur est TRUE, la surface est supposée avoir un canal alpha ; sinon, la valeur est FALSE.

[in] SrcPitch

Pitch de la surface source, en octets.

Remarques

Si une opération de transfert de bloc de bits d’étirement (bitblt) est requise, les rapports d’étirement x et y sont calculés respectivement comme les ratios des tailles x et y des membres DstRect et SrcRect , et l’opération d’étirement se poursuit comme si la valeur COLORONCOLOR dans *Wingdi.h était définie. Lors d’un transfert de bloc de bits qui diminue, suffisamment de pixels doivent être ignorés pour que les pixels n’ont pas besoin d’être combinés. Lors d’un transfert de bloc de bits étiré, les pixels doivent être répliqués.

Lorsque les sous-rectangles sont transformés en espace de surface source, le résultat est garanti à l’intérieur de la surface source. La transformation des coordonnées d’un sous-rectangle dans la surface de destination en coordonnées dans la surface source est définie par les formules suivantes, où :

  • (Xd, Yd) est un point à l’intérieur du sous-rectangle
  • (Xs, Ys) est un point à l’intérieur du rectangle source
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)</code></pre>

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
En-tête d3dkmddi.h (inclure D3dkmddi.h)

Voir aussi

RECT