PFND3DDDI_COMPOSERECTS 콜백 함수(d3dumddi.h)
ComposeRects 함수는 원본 표면에서 대상 표면까지 2차원 영역을 구성합니다.
구문
PFND3DDDI_COMPOSERECTS Pfnd3dddiComposerects;
HRESULT Pfnd3dddiComposerects(
HANDLE hDevice,
const D3DDDIARG_COMPOSERECTS *unnamedParam2
)
{...}
매개 변수
hDevice
디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.
unnamedParam2
pData [in]
사각형 영역을 구성하는 데 사용되는 매개 변수를 지정하는 D3DDDIARG_COMPOSERECTS 구조체에 대한 포인터입니다.
반환 값
ComposeRects는 다음 값 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
S_OK | 사각형 영역이 성공적으로 구성되었습니다. |
E_OUTOFMEMORY | ComposeRects에서 완료하는 데 필요한 메모리를 할당할 수 없습니다. |
설명
ComposeRects 함수에는 다음과 같은 제약 조건 및 유효성 검사가 적용됩니다.
- 드라이버는 원본 표면 내부에 완전히 포함되지 않은 원본 사각형 영역을 무시해야 합니다.
- 오프셋을 적용한 후 대상 사각형 영역은 대상 표면의 일부 또는 완전히 바깥쪽에 있을 수 있습니다. 대상 사각형 영역은 부분적으로 바깥쪽에 있는 경우 잘리거나 완전히 바깥쪽에 있는 경우 거부되거나 완전히 잘립니다.
- 원본 및 대상에 대해 동일한 표면을 지정할 수 없습니다.
- ComposeRects와 함께 사용되는 표면 및 꼭짓점 버퍼는 잠기면 안 됩니다.
- 원본 및 대상 표면은 생성될 때 픽셀당 1비트(D3DDDIFMT_A1)로 형식이 지정됩니다.
- 디버그 빌드에서 Microsoft Direct3D 런타임은 대상 사각형 영역 설명의 각 인덱스에 대한 원본 사각형 영역 설명이 있는지 확인합니다. 소매 빌드에서 ComposeRects는 잘못된 인덱스가 있는 경우 오류를 반환합니다.
- 수학 연산 중에 내부 오버플로를 방지하려면 사각형 영역 수가 0xFFFF 미만이어야 합니다.
- Surface 및 꼭짓점 버퍼는 동일한 디스플레이 디바이스(그래픽 컨텍스트)를 사용하여 만들어야 합니다.
- 대상 화면에 대해 로컬 디스플레이 메모리를 지정해야 합니다.
for (UINT i=0; i < COMPOSERECTS.NumDstRects; i++) {
if (i >= Size(VertexBuffer(hDstRectDescsVB)) / sizeof(D3DCOMPOSERECTDSTDESC))
Ignore the rectangle;
if (VertexBuffer(hDstRectDescsVB)[i].RectDescIndex >= Size(VertexBuffer(hSrcRectDescsVB)) / sizeof(D3DCOMPOSERECTSRCDESC))
Ignore the rectangle;
SourceRectangle = VertexBuffer(hSrcResource)[VertexBuffer(hDstRectDescsVB)[i].RectDescIndex];
DestinationRectangle.X = {VertexBuffer(hDstRectDescsVB)[i].X + COMPOSERECTS.Xoffset;
DestinationRectangle.Y = {VertexBuffer(hDstRectDescsVB)[i].Y + COMPOSERECTS.Yoffset;
DestinationRectangle.Width = SourceRectangle.Width;
DestinationRectangle.Height = SourceRectangle.Height;
Perform COMPOSERECTS.Operation for each pixel;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | d3dumddi.h(D3dumddi.h 포함) |