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 구조체입니다. 이 사각형은 대상 표면의 좌표계에 지정되며 왼쪽 위와 오른쪽 아래의 두 점으로 정의됩니다. 사각형은 오른쪽 아래에 배타적입니다. 즉, 아래쪽 및 오른쪽 가장자리는 비트 블록 전송의 일부가 아닙니다. 사각형을 정의하는 두 지점은 항상 순서가 잘 정렬됩니다.

DstRect에서 정의한 대상 사각형은 대상 표면의 범위를 초과할 수 있지만 하위 사각형은 초과할 수 없습니다. 또한 모든 하위 사각형은 대상 표면 내부에 적합하도록 보장됩니다. 하위 사각형은 대상 사각형보다 작은 경계 사각형으로 더 제한할 수 있습니다.

TmpSurfAllocationIndex

[in] 임시 표면을 지정하는 할당 목록의 요소 인덱스입니다. 이 표면은 픽셀 셰이더를 실행하기 전에 대상을 읽는 데 사용할 수 있습니다.

GammaSurfAllocationIndex

[in] D3DKMDT_GDISURFACETYPE 형식의 감마 테이블을 지정하는 할당 목록의 요소 인덱스입니다. 감마 조회 할당의 형식은 픽셀당 8비트이며 해상도는 512 x 16픽셀입니다. 할당의 각 행에는 감마와 역 감마라는 두 개의 테이블이 포함됩니다. 각 테이블에는 256개의 항목이 있습니다.

AlphaSurfAllocationIndex

[in] 표면의 알파 값을 지정하는 할당 목록의 요소 인덱스입니다. 알파 표면은 DstRect 대상 사각형으로 제한된 대상 표면 공간과 동일한 좌표 공간에 있습니다.

DstAllocationIndex

[in] DstRect 대상 사각형에서 참조하는 할당을 지정하는 할당 목록의 요소 인덱스입니다.

DstToAlphaOffsetX

[in] 대상 사각형 좌표 공간을 알파 표면 좌표 공간으로 변환하는 x 방향의 오프셋입니다.

DstToAlphaOffsetY

[in] 대상 사각형 좌표 공간을 알파 표면 좌표 공간으로 변환하는 y 방향의 오프셋입니다.

Color

[in] 감마에 대해 수정된 32비트 ARGB 부호 없는 픽셀 형식(D3DDDIFORMAT 열거형의 D3DDDIFMT_A8R8G8B8 값으로 정의됨)의 전경색입니다.

Gamma

[in] 감마 조회 테이블을 지정하는 할당 목록의 요소 인덱스입니다. 감마 값은 [0, 15] 범위에 있고, 그렇지 않으면 감마가 0xFFFFFFFF(D3DKM_INVALID_GAMMA_INDEX 값)입니다. ClearType 혼합에서 감마를 사용하는 방법에 대한 자세한 내용은 설명을 참조하세요.

NumSubRects

DstRect 대상 사각형으로 제한된 대상 표면 공간의 하위 사각형 수입니다.

pSubRects

DstRect 대상 사각형으로 제한된 대상 표면 공간의 하위 사각형에 대한 포인터입니다.

AlphaSurfPitch

AlphaSurfAllocationIndex에서 참조하는 알파 표면의 피치(바이트)입니다.

Color2

[in] 32비트 ARGB 부호 없는 픽셀 형식( D3DDDIFORMAT 열거 형의 D3DDDIFMT_A8R8G8B8 값으로 정의됨)의 전경색은 감마에 대해 수정되지 않습니다.

설명

감마 값은 0xFFFFFFFF(D3DKM_INVALID_GAMMA_INDEX 값)으로 설정하지 않는 한 [0, 15] 범위에 있어야 합니다. 감마 값은 감마 할당에 있는 행의 인덱스입니다.

감마가 [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 = 색 멤버에 정의된 감마 수정 전경
  • Color2 = Color2 멤버에서 정의한 대로 감마가 수정되지 않은 전경색
  • D = 대상 픽셀 색
  • A = 알파 표면 색

디스플레이 미니포트 드라이버는 A의 구성 요소가 0이면 해당 출력 구성 요소가 배경색 구성 요소(D)와 같은지 확인해야 합니다.

또한 드라이버는 A의 구성 요소가 0xFF 경우 해당 출력 구성 요소가 전경색 구성 요소(Color2)와 동일한지 확인해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7
머리글 d3dkmddi.h(D3dkmddi.h 포함)

추가 정보

D3DDDIFORMAT

D3DKMDT_GDISURFACETYPE

RECT