DXGK_GDIARG_STRETCHBLT 구조체(d3dkmddi.h)
DXGK_GDIARG_STRETCHBLT 구조체는 GDI 하드웨어 가속 스트레치 비트 블록 전송(비트블릿) 작업의 특징을 설명합니다.
구문
typedef struct _DXGK_GDIARG_STRETCHBLT {
[in] RECT SrcRect;
[in] RECT DstRect;
[in] UINT DstAllocationIndex;
[in] UINT SrcAllocationIndex;
UINT NumSubRects;
[in] RECT *pSubRects;
union {
struct {
UINT Mode : 16;
UINT MirrorX : 1;
UINT MirrorY : 1;
};
[in] UINT Flags;
};
[in] UINT SrcPitch;
} DXGK_GDIARG_STRETCHBLT;
멤버
[in] SrcRect
복사할 사각형 영역을 정의하는 RECT 구조체입니다. 이 사각형은 원본 표면의 좌표계에 지정되며 왼쪽 위와 오른쪽 아래의 두 점으로 정의됩니다. 사각형을 정의하는 두 지점은 항상 순서가 잘 정렬됩니다.
원본 사각형은 원본 표면의 범위를 초과하지 않으므로 원본 표면을 오버행하지 않습니다.
이 사각형은 DstRect에서 정의한 대상 사각형에 매핑됩니다.
자세한 내용은 주의 섹션을 참조하세요.
[in] DstRect
수정할 사각형 영역을 정의하는 RECT 구조체입니다. 이 사각형은 대상 표면의 좌표계에 지정되며 왼쪽 위와 오른쪽 아래의 두 점으로 정의됩니다. 사각형은 오른쪽 아래에 배타적입니다. 즉, 아래쪽 및 오른쪽 가장자리는 비트 블록 전송의 일부가 아닙니다. 사각형을 정의하는 두 지점은 항상 순서가 잘 정렬됩니다.
DstRect에서 정의한 대상 사각형은 대상 표면의 범위를 초과할 수 있지만 하위 사각형은 초과할 수 없습니다. 또한 모든 하위 사각형은 대상 표면 내부에 적합하도록 보장됩니다. 하위 사각형은 대상 사각형보다 작은 경계 사각형으로 더 제한할 수 있습니다.
자세한 내용은 주의 섹션을 참조하세요.
[in] DstAllocationIndex
DstRect 대상 사각형에서 참조하는 할당을 지정하는 할당 목록의 요소 인덱스입니다.
[in] SrcAllocationIndex
SrcRect 원본 사각형에서 참조하는 할당을 지정하는 할당 목록의 요소 인덱스입니다.
NumSubRects
DstRect 대상 사각형으로 제한된 대상 표면 공간의 하위 사각형 수입니다.
[in] pSubRects
DstRect 대상 사각형으로 제한된 대상 표면 공간의 하위 사각형에 대한 포인터입니다.
[in] Mode
Wingdi.h에 정의된 다음 값이 설정되었는지 여부에 따라 원본 픽셀을 결합하여 출력 픽셀을 생성하는 방법을 지정합니다.
값 | 의미 |
---|---|
BLACKONWHITE | 축소 비트 블록 전송에서 픽셀은 부울 AND 연산과 결합되어야 합니다. 늘이는 비트 블록 전송에서 픽셀을 복제해야 합니다. |
WHITEONBLACK | 축소 비트 블록 전송에서 픽셀은 부울 OR 연산과 결합되어야 합니다. 늘이는 비트 블록 전송에서 픽셀을 복제해야 합니다. |
이 유형의 작업은 드라이버가 DXGK_PRESENTATIONCAPS 구조에서 SupportMonoStretchBltModes 멤버를 설정한 경우에만 처리됩니다.
[in] MirrorX
xdirection의 미러 모드에서 스트레치 비트 블록 전송을 수행할지 여부를 지정합니다. 이 유형의 작업은 MirrorX 값이 0이 아니고 드라이버가 DXGK_PRESENTATIONCAPS 구조체에서 SupportMirrorStretchBlt 멤버를 설정한 경우에만 처리됩니다.
[in] MirrorY
스트레치 비트 블록 전송이 y 방향으로 미러 모드에서 수행될지 여부를 지정합니다. 이 유형의 작업은 MirrorY 값이 0이 아니고 드라이버가 DXGK_PRESENTATIONCAPS 구조체에서 SupportMirrorStretchBlt 멤버를 설정한 경우에만 처리됩니다.
[in] Flags
드라이버 코드를 디버그하는 데 사용할 수 있는 선택적 UINT 값입니다.
[in] SrcPitch
원본 표면의 피치(바이트)입니다.
설명
x 및 y 스트레치 비율은 각각 DstRect 및 SrcRect 멤버의 x 및 y 크기의 비율로 계산됩니다.
Wingdi.h에 정의된 HALFTONE 모드 및 STRETCH_HALFTONE 모드는 Mode 멤버에서 설정되지 않습니다. COLORONCOLOR 모드는 DXGK_GDIARG_ALPHABLEND 및 DXGK_GDIARG_TRANSPARENTBLT 구조체에서 설정할 수 있습니다.
하위 사각형이 원본 표면 공간으로 변환되면 결과가 원본 표면 내에 있음을 보장합니다. 대상 표면에서 하위 사각형의 좌표를 원본 표면의 좌표로 변환하는 것은 다음 수식에 의해 정의됩니다.
- (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 7 |
머리글 | d3dkmddi.h(D3dkmddi.h 포함) |