DXGK_GDIARG_CLEARTYPEBLEND 構造体 (d3dkmddi.h)

DXGK_GDIARG_CLEARTYPEBLEND構造体は、GDI ハードウェアアクセラレータ ClearType およびアンチエイリアステキストピクセルブレンド操作の特性を記述します。

構文

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;

メンバー

[in] DstRect

変更する四角形領域を定義する RECT 構造体。 この四角形は、変換先サーフェスの座標系で指定され、左上と右下の 2 つの点で定義されます。 四角形は右下の排他的です。つまり、その下端と右端は、ビット ブロック転送の一部ではありません。 四角形を定義する 2 つの点は、常に適切に並べ替えられます。

DstRect によって定義された変換先の四角形は、変換先のサーフェスの境界を超えることができますが、サブ四角形を使用することはできません。 さらに、すべてのサブ四角形がターゲット サーフェス内に収まることが保証されます。 サブ四角形は、移動先の四角形よりも小さい外接する四角形によってさらに制約できます。

TmpSurfAllocationIndex

[入力]一時的なサーフェスを指定する割り当てリスト内の要素のインデックス。 このサーフェスを使用して、ピクセル シェーダーを実行する前に宛先を読み取ることができます。

GammaSurfAllocationIndex

[入力]D3DKMDT_GDISURFACETYPE 型のガンマ テーブルを指定する割り当てリスト内の要素のインデックス。 ガンマ 参照割り当ての形式はピクセルあたり 8 ビットで、解像度は 512 x 16 ピクセルです。 割り当ての各行には、ガンマと逆ガンマの 2 つのテーブルが含まれています。 各テーブルには 256 個のエントリがあります。

AlphaSurfAllocationIndex

[入力]サーフェスのアルファ値を指定する割り当てリスト内の要素のインデックス。 アルファ サーフェスは、 DstRect 変換先の四角形で囲まれた移動先サーフェス空間と同じ座標空間にあります。

DstAllocationIndex

[入力] DstRect 変換先の四角形によって参照される割り当てを指定する割り当てリスト内の要素のインデックス。

DstToAlphaOffsetX

[入力]ターゲットの四角形座標空間をアルファサーフェス座標空間に変換する x 方向のオフセット。

DstToAlphaOffsetY

[入力]ターゲットの四角形座標空間をアルファサーフェス座標空間に変換する y 方向のオフセット。

Color

[入力]前景色 (32 ビット ARGB 符号なしピクセル形式) ( D3DDDIFORMAT 列挙体のD3DDDIFMT_A8R8G8B8値で定義) で、ガンマを修正しました。

Gamma

[入力]ガンマ参照テーブルを指定する割り当てリスト内の要素のインデックス。 ガンマ値は [0, 15] の範囲内にあり、それ以外の場合は gamma が0xFFFFFFFF (D3DKM_INVALID_GAMMA_INDEXの値)。 ClearType ブレンドでのガンマの使用方法の詳細については、「解説」を参照してください。

NumSubRects

DstRect 変換先の四角形で囲まれた、移動先のサーフェス空間内のサブ四角形の数。

pSubRects

DstRect 変換先の四角形で囲まれた移動先サーフェス空間内のサブ四角形へのポインター。

AlphaSurfPitch

AlphaSurfAllocationIndex によって参照されるアルファサーフェスのピッチ (バイト単位)。

Color2

[入力]前景色 (32 ビット ARGB 符号なしピクセル形式) ( D3DDDIFORMAT 列挙のD3DDDIFMT_A8R8G8B8値で定義) は、ガンマに対して修正されません。

注釈

Gamma の値は、0xFFFFFFFF (D3DKM_INVALID_GAMMA_INDEXの値) に設定しない限り、[0, 15] の範囲にする必要があります。 Gamma の値は、 ガンマ 割り当ての行のインデックスです。

ガンマが[0, 15]の範囲にある場合は、以下のピクセル単位のブレンドが行われる。

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;

ガンマが0xFFFFFFFFと等しい場合 (D3DKM_INVALID_GAMMA_INDEXの値)、次のピクセル単位のブレンドが実行されます。

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

ここで、次のパラメーターは、D3DDDIFORMAT列挙で定義されている D3DDDIFMT_A8R8G8B8 形式です。

  • Color = Color メンバーで定義されているガンマ補正前景色
  • Color2 = 前景色。 Color2 メンバーで定義されているガンマ補正は行われません
  • D = 宛先ピクセルの色
  • A = アルファサーフェスの色

ディスプレイ ミニポート ドライバーは、A のコンポーネントが 0 の場合、対応する出力コンポーネントが背景色コンポーネント (D) と同じであることを確認する必要があります。

また、ドライバーは、A のコンポーネントが0xFFされている場合、対応する出力コンポーネントが前景色コンポーネント (Color2) と同じであることを確認する必要があります。

要件

要件
サポートされている最小のクライアント Windows 7
Header d3dkmddi.h (D3dkmddi.h を含む)

こちらもご覧ください

D3DDDIFORMAT

D3DKMDT_GDISURFACETYPE

Rect