DXGK_GDIARG_ALPHABLEND 구조체(d3dkmddi.h)
DXGK_GDIARG_ALPHABLEND 구조체는 GDI 하드웨어 가속 알파 혼합 작업의 특징을 설명합니다.
구문
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;
구성원
[in] SrcRect
복사할 사각형 영역을 정의하는 RECT 구조체입니다. 이 사각형은 원본 표면의 좌표계에 지정되며 왼쪽 위와 오른쪽 아래의 두 점으로 정의됩니다. 사각형을 정의하는 두 점의 순서는 항상 잘 정렬됩니다.
원본 사각형은 원본 표면의 범위를 초과하지 않으므로 원본 표면을 오버행하지 않습니다.
이 사각형은 DstRect에서 정의한 대상 사각형에 매핑됩니다.
자세한 내용은 설명 섹션을 참조하세요.
[in] DstRect
수정할 사각형 영역을 정의하는 RECT 구조체입니다. 이 사각형은 대상 표면의 좌표계에 지정되며 왼쪽 위와 오른쪽 아래의 두 점으로 정의됩니다. 직사각형은 오른쪽 아래에만 있습니다. 즉, 아래쪽 및 오른쪽 가장자리는 비트 블록 전송의 일부가 아닙니다. 사각형을 정의하는 두 점의 순서는 항상 잘 정렬됩니다.
DstRect에서 정의한 대상 사각형은 대상 표면의 범위를 초과할 수 있지만 하위 사각형은 초과할 수 없습니다. 또한 모든 하위 사각형은 대상 표면 내부에 적합하도록 보장됩니다. 하위 사각형은 대상 사각형보다 작은 경계 사각형에 의해 추가로 제한될 수 있습니다.
자세한 내용은 설명 섹션을 참조하세요.
[in] SrcAllocationIndex
SrcRect 원본 사각형에서 참조하는 할당을 지정하는 할당 목록의 요소 인덱스입니다.
[in] DstAllocationIndex
DstRect 대상 사각형에서 참조하는 할당을 지정하는 할당 목록의 요소 인덱스입니다.
[in] NumSubRects
DstRect 대상 사각형으로 경계가 지정된 대상 표면 공간의 하위 사각형 수입니다.
[in] pSubRects
대상 표면 공간의 하위 사각형에 대한 포인터입니다.
[in] SourceConstantAlpha
전체 소스 표면에 적용할 상수 혼합 요소입니다. 이 값은 [0,255] 범위에 있으며 여기서 0은 완전히 투명하고 255는 완전히 불투명합니다.
[in] SourceHasAlpha
표면에 알파 채널이 있는 것으로 간주되는지 여부를 정의합니다. TRUE이면 표면에 알파 채널이 있는 것으로 간주됩니다. 그렇지 않으면 값이 FALSE입니다.
[in] SrcPitch
소스 표면의 피치(바이트)입니다.
설명
스트레치 비트 블록 전송(비트블렛) 연산이 필요한 경우 x 및 y 스트레치 비율은 각각 DstRect 및 SrcRect 멤버의 x 및 y 크기의 비율로 계산되며, Stretch 연산은 Wingdi.h 의 COLORONCOLOR 값이 설정된 것처럼 진행됩니다. 축소 비트 블록 전송에서 픽셀을 결합할 필요가 없도록 충분한 픽셀을 무시해야 합니다. 확장 비트 블록 전송에서 픽셀을 복제해야 합니다.
하위 사각형이 원본 표면 공간으로 변환되면 결과가 원본 표면 내에 있음을 보장합니다. 대상 표면의 하위 사각형 좌표가 원본 표면의 좌표로 변환되는 경우 다음 수식에 의해 정의됩니다.
- (Xd, Yd)는 하위 사각형 내의 점입니다.
- (Xs, Ys)는 원본 사각형 내의 점입니다.
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)
요구 사항
| 지원되는 최소 클라이언트 | Windows 운영 체제의 Windows 7 이상 버전에서 사용할 수 있습니다. |
| 헤더 | d3dkmddi.h(D3dkmddi.h 포함) |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기