Share via


DXGK_GDIARG_CLEARTYPEBLEND struttura (d3dkmddi.h)

La struttura DXGK_GDIARG_CLEARTYPEBLEND descrive le caratteristiche di un'operazione di fusione di pixel di testo con accelerazione hardware GDI ClearType e antialiased text blending.

Sintassi

typedef struct _DXGK_GDIARG_CLEARTYPEBLEND {
  [in] RECT DstRect;
       UINT TmpSurfAllocationIndex;
       UINT GammaSurfAllocationIndex;
       UINT AlphaSurfAllocationIndex;
       UINT DstAllocationIndex;
       INT  DstToAlphaOffsetX;
       INT  DstToAlphaOffsetY;
       UINT Color;
       UINT Gamma;
       UINT NumSubRects;
       RECT *pSubRects;
       UINT AlphaSurfPitch;
       UINT Color2;
} DXGK_GDIARG_CLEARTYPEBLEND;

Members

[in] DstRect

Struttura RECT che definisce l'area rettangolare da modificare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di destinazione e viene definito da due punti: in alto a sinistra e in basso a destra. Il rettangolo è esclusivo in basso a destra; ovvero, i suoi bordi inferiori e destro non fanno parte del trasferimento a blocchi di bit. I due punti che definiscono il rettangolo sono sempre ordinati.

Il rettangolo di destinazione definito da DstRect può superare i limiti della superficie di destinazione, ma i sotto rettangoli non possono. Inoltre, tutti i sotto rettangoli sono garantiti per adattarsi all'interno dell'area di destinazione. I rettangoli secondari possono essere vincolati ulteriormente da un rettangolo di selezione minore del rettangolo di destinazione.

TmpSurfAllocationIndex

[in] Indice dell'elemento nell'elenco di allocazione che specifica una superficie temporanea. Questa superficie può essere usata per leggere la destinazione prima di eseguire un pixel shader.

GammaSurfAllocationIndex

[in] Indice dell'elemento nell'elenco di allocazione che specifica una tabella gamma di tipo D3DKMDT_GDISURFACETYPE. Il formato dell'allocazione di ricerca gamma è di 8 bit per pixel e la risoluzione è di 512 x 16 pixel. Ogni riga dell'allocazione contiene due tabelle: gamma e gamma inversa. Ogni tabella ha 256 voci.

AlphaSurfAllocationIndex

[in] Indice dell'elemento nell'elenco di allocazione che specifica i valori alfa di una superficie. La superficie alfa si trova nello stesso spazio di coordinate dello spazio della superficie di destinazione associato al rettangolo di destinazione DstRect .

DstAllocationIndex

[in] Indice dell'elemento nell'elenco di allocazione che specifica l'allocazione a cui fa riferimento il rettangolo di destinazione DstRect .

DstToAlphaOffsetX

[in] Offset nella direzione x che trasforma lo spazio delle coordinate del rettangolo di destinazione nello spazio di coordinate della superficie alfa.

DstToAlphaOffsetY

[in] Offset nella direzione y che trasforma lo spazio delle coordinate del rettangolo di destinazione nello spazio di coordinate alfa della superficie.

Color

[in] Colore di primo piano, in formato ARGB senza segno a 32 bit (come definito dal valore D3DDDIFMT_A8R8G8B8 dell'enumerazione D3DDDIFORMAT ), corretto per gamma.

Gamma

[in] Indice dell'elemento nell'elenco di allocazione che specifica la tabella di ricerca gamma. I valori gamma si trovano nell'intervallo di [0, 15], altrimenti gamma è 0xFFFFFFFF (il valore di D3DKM_INVALID_GAMMA_INDEX). Per altre informazioni sull'uso della gamma in ClearType blending, vedere Osservazioni.

NumSubRects

Numero di rettangoli secondari nello spazio della superficie di destinazione associato al rettangolo di destinazione DstRect .

pSubRects

Puntatore ai sotto rettangoli nello spazio di superficie di destinazione associato al rettangolo di destinazione DstRect .

AlphaSurfPitch

Il passo, in byte, della superficie alfa a cui fa riferimento AlphaSurfAllocationIndex.

Color2

[in] Colore di primo piano, in formato ARGB senza segno a 32 bit (come definito dal valore D3DDDIFMT_A8R8G8B8 dell'enumerazione D3DDDIFORMAT ), non corretto per gamma.

Commenti

Il valore di Gamma deve essere compreso nell'intervallo di [0, 15] a meno che non sia impostato su 0xFFFFFFFF (il valore di D3DKM_INVALID_GAMMA_INDEX). Il valore di Gamma è l'indice di una riga nell'allocazione gamma.

Quando gamma si trova nell'intervallo di [0, 15], viene eseguita la fusione per pixel seguente.

GammaTable = (BYTE*)GammaSurfaceAddress + Gamma * GammaSurfacePitch;
InverseGammaTable = (BYTE*)GammaSurfaceAddress + Gamma * GammaSurfacePitch + 256;

Tmp.r = GammaTable[D.r]; // red
Tmp.g = GammaTable[D.g]; // green
Tmp.b = GammaTable[D.b]; // blue

BlendColor.r = InverseGammaTable[round((Tmp.r + (Color.r - Tmp.r) * A.r / 255.0))]
BlendColor.g = InverseGammaTable[round((Tmp.g + (Color.g - Tmp.g) * A.g / 255.0))]
BlendColor.b = InverseGammaTable[round((Tmp.b + (Color.b - Tmp.b) * A.b / 255.0))]
OutputColor.a = D.a

OutputColor.r = (A.r == 0) ? D.r : (A.r == 255) ? Color2.r : BlendColor.r;
OutputColor.g = (A.g == 0) ? D.g : (A.g == 255) ? Color2.g : BlendColor.g;
OutputColor.b = (A.b == 0) ? D.b : (A.b == 255) ? Color2.b : BlendColor.b;

Quando gamma è uguale a 0xFFFFFFFF (il valore di D3DKM_INVALID_GAMMA_INDEX), viene eseguita la fusione per pixel seguente.

OutputColor.a = D.a
OutputColor.r = D.r + (Color.r - D.r) * (Color.r >= D.r ? A.r : A.g) / 255.0
OutputColor.g = D.g + (Color.g - D.g) * (Color.g >= D.g ? A.r : A.g) / 255.0
OutputColor.b = D.b + (Color.b - D.b) * (Color.b >= D.b ? A.r : A.g) / 255.0

Dove i parametri seguenti si trovano nel formato D3DDDIFMT_A8R8G8B8 definito nell'enumerazione D3DDDIFORMAT :

  • Colore = colore di primo piano corretto gamma, come definito dal membro Color
  • Color2 = colore di primo piano, non gamma corretto, come definito dal membro Color2
  • D = colore pixel di destinazione
  • A = colore della superficie alfa

Il driver miniport visualizzato deve assicurarsi che quando un componente di A è zero, il componente di output corrispondente è lo stesso del componente colore di sfondo (D).

Il driver deve inoltre assicurarsi che quando un componente di A è 0xFF, il componente di output corrispondente è lo stesso del componente colore di primo piano (Color2).

Requisiti

Requisito Valore
Client minimo supportato Windows 7
Intestazione d3dkmddi.h (include D3dkmddi.h)

Vedi anche

D3DDDIFORMAT

D3DKMDT_GDISURFACETYPE

RECT