다음을 통해 공유


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 및 꼭짓점 버퍼는 동일한 디스플레이 디바이스(그래픽 컨텍스트)를 사용하여 만들어야 합니다.
  • 대상 화면에 대해 로컬 디스플레이 메모리를 지정해야 합니다.
다음 예제 코드는 ComposeRects 가 수행하는 작업을 보여 줍니다.
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 포함)

추가 정보

D3DDDIARG_COMPOSERECTS

D3DDDI_DEVICEFUNCS