오버레이 DDI

이 섹션은 Windows 7 이상 및 Windows Server 2008 R2 이상 버전의 Windows 운영 체제에만 적용됩니다.

오버레이 DDI는 오버레이 지원을 확인하기 위한 Direct3D 버전 9 DDI 의 확장입니다. 오버레이 DDI는 다음 진입점으로 구성됩니다.

  • D3DDDICAPS_TYPE 열거형의 D3DDDICAPS_CHECKOVERLAYSUPPORT 값은 Direct3D 런타임에서 디스플레이 디바이스가 특정 오버레이를 지원하는지 여부를 확인하는 데 사용됩니다. 런타임은 런타임이 GetCaps를 호출할 때 드라이버 GetCaps 함수의 pData 매개 변수가 가리키는 D3DDDIARG_GETCAPS 구조의 Type 멤버에 D3DDDICAPS_CHECKOVERLAYSUPPORT 설정합니다. 또한 런타임은 D3DDDIARG_GETCAPS pInfo 멤버를 오버레이를 설명하는 DDICHECKOVERLAYSUPPORTINPUT 구조체에 대한 포인터로 설정합니다. 드라이버가 오버레이를 지원하는 경우 드라이버는 D3DOVERLAYCAPS 구조체의 멤버를 설정하고 D3DDDIARG_GETCAPSpData 멤버에서 이 구조체에 대한 포인터를 반환합니다. 그렇지 않으면 드라이버가 오버레이를 지원하지 않는 경우 드라이버는 지원 부족이 오버레이 형식을 기반으로 하는지 여부에 따라 D3DDDIERR_UNSUPPORTEDOVERLAYFORMAT 또는 D3DDDIERR_UNSUPPORTEDOVERLAY 사용하여 GetCaps 함수에 대한 호출에 실패합니다. D3DOVERLAYCAPS는 DirectX SDK 설명서에 설명되어 있습니다.

    드라이버는 D3DOVERLAYCAPS의 MaxOverlayDisplayWidthMaxOverlayDisplayHeight 멤버를 설정하여 드라이버와 하드웨어가 가질 수 있는 제한을 나타내며, 여기에는 오버레이 데이터를 확장한 후 최종 오버레이 크기가 포함됩니다.

    드라이버는 오버레이 하드웨어가 임의로 오버레이 데이터를 확장 및 축소할 수 있음을 나타내기 위해 D3DOVERLAYCAPS의 Caps 멤버에 D3DOVERLAYCAPS_STRETCHX(0x00000040) 및 D3DOVERLAYCAPS_STRETCHY(0x00000080) 기능 비트를 설정합니다. 드라이버는 GPU를 통해 오버레이 스트레칭을 에뮬레이하려고 시도해서는 안 되며 오버레이 하드웨어에서 스트레칭을 지원하는 경우에만 이러한 대문자를 설정해야 합니다. 일반적으로 애플리케이션이 비디오 처리 및 컴퍼지션 단계의 일부로 GPU 스트레칭을 수행하는 데 필요한 오버헤드는 드라이버가 오버레이 스트레칭을 에뮬레이하기 위해 맨 끝에 별도의 패스를 수행하는 것보다 더 적습니다.

  • 드라이버는 D3DDDI_OVERLAYINFOFLAGS 구조체에서 다음과 같은 새 비트 필드 플래그를 처리해야 합니다. D3DDDI_OVERLAYINFOFLAGS 구조체는 수행할 오버레이 작업의 유형을 식별합니다. D3DDDI_OVERLAYINFOFLAGS 구조체는 드라이버의 CreateOverlay 또는 UpdateOverlay 함수를 호출할 때 D3DDDI_OVERLAYINFO 구조체의 Flags 멤버에 지정됩니다.

    LimitedRGB
    오버레이는 전체 범위 RGB가 아닌 제한된 범위 RGB입니다. 제한된 범위 RGB에서 RGB 범위는 16:16:16이 검은색이고 235:235:235가 흰색이 되도록 압축됩니다.

    YCbCrBT709
    오버레이는 BT.601이 아닌 HDTV(고화질 TV)를 나타내는 BT.709입니다.

    YCbCrxvYCC
    오버레이는 기존 YCbCr이 아닌 확장된 YCbCr(xvYCC)입니다.

  • 디스플레이 형식이 32비트(예: DWM(데스크톱 Windows 관리자)가 디스플레이 모드에 D3DFMT_A16B16G16R16F 사용하는 경우) 런타임은 D3DDDI_OVERLAYINFO 구조의 DstColorKeyLow 멤버에 오버레이 색키의 하위 32비트와 D3DDDI_OVERLAYINFODstColorKeyHigh 멤버의 상위 32비트 를 배치합니다.