Überlagerungs-DDI

Dieser Abschnitt gilt nur für Windows 7 und höher sowie Windows Server 2008 R2 und höhere Versionen des Windows-Betriebssystems.

Der Overlay-DDI ist eine Erweiterung des Direct3D-DDI, Version 9 , um die Unterstützung von Overlays zu überprüfen. Der Overlay-DDI besteht aus den folgenden Einstiegspunkten:

  • Der D3DDDICAPS_CHECKOVERLAYSUPPORT Wert aus der D3DDDICAPS_TYPE-Enumeration wird von der Direct3D-Runtime verwendet, um zu überprüfen, ob das Anzeigegerät eine bestimmte Überlagerung unterstützt. Die Runtime legt D3DDDICAPS_CHECKOVERLAYSUPPORT im Type-Member der D3DDDIARG_GETCAPS-Struktur fest, auf die der pData-Parameter der GetCaps-Funktion des Treibers verweist, wenn die Runtime GetCaps aufruft. Die Laufzeit legt auch den pInfo-Member von D3DDDIARG_GETCAPS auf einen Zeiger auf eine DDICHECKOVERLAYSUPPORTINPUT-Struktur fest, die die Überlagerung beschreibt. Wenn der Treiber die Überlagerung unterstützt, legt der Treiber die Member einer D3DOVERLAYCAPS-Struktur fest und gibt einen Zeiger auf diese Struktur im pData-Member von D3DDDIARG_GETCAPS zurück. Wenn der Treiber die Überlagerung nicht unterstützt, schlägt der Treiber den Aufruf seiner GetCaps-Funktion entweder mit D3DDDIERR_UNSUPPORTEDOVERLAYFORMAT oder D3DDDIERR_UNSUPPORTEDOVERLAY fehl, je nachdem, ob die fehlende Unterstützung auf dem Überlagerungsformat basiert. D3DOVERLAYCAPS wird in der DirectX SDK-Dokumentation beschrieben.

    Der Treiber legt die MaxOverlayDisplayWidth - und MaxOverlayDisplayHeight-Member von D3DOVERLAYCAPS fest, um alle Einschränkungen anzugeben, die der Treiber und die Hardware haben können, die die endgültige Überlagerungsgröße betreffen (nach dem Strecken der Overlaydaten).

    Der Treiber legt die D3DOVERLAYCAPS_STRETCHX (0x00000040) und D3DOVERLAYCAPS_STRETCHY (0x00000080) im Caps-Member von D3DOVERLAYCAPS fest, um anzugeben, dass die Overlayhardware die Overlaydaten beliebig strecken und verkleinern kann. Treiber sollten nicht versuchen, die Überlagerungsdehnung über die GPU zu emulieren, und diese Obergrenzen sollten nur festgelegt werden, wenn die Überlagerungshardware Stretching unterstützt. In der Regel ist weniger Aufwand erforderlich, damit die Anwendung GPU-Stretching als Teil der Videoverarbeitungs- und Kompositionsphase ausführt, als dass der Treiber am Ende einen separaten Durchlauf zum Emulieren der Überlagerungsdehnung durchführt.

  • Der Treiber sollte die folgenden neuen Bitfeldflags aus der D3DDDI_OVERLAYINFOFLAGS-Struktur verarbeiten. Eine D3DDDI_OVERLAYINFOFLAGS-Struktur gibt den Typ des auszuführenden Überlagerungsvorgangs an. Eine D3DDDI_OVERLAYINFOFLAGS-Struktur wird im Flags-Member der D3DDDI_OVERLAYINFO-Struktur in einem Aufruf der CreateOverlay - oder UpdateOverlay-Funktion des Treibers angegeben.

    LimitedRGB
    Bei der Überlagerung handelt es sich um RGB mit begrenztem Bereich und nicht um RGB mit vollem Bereich. Im rgb-Bereich mit begrenztem Bereich wird der RGB-Bereich so komprimiert, dass 16:16:16 schwarz und 235:235:235 weiß ist.

    YCbCrBT709
    Das Overlay ist BT.709, was auf HDTV (High-Definition TV) anstelle von BT.601 hinweist.

    YCbCrxvYCC
    Die Überlagerung ist erweitert YCbCr (xvYCC) anstelle von herkömmlichem YCbCr.

  • Wenn das Anzeigeformat 64 Bit anstelle von 32 Bits aufweist (wenn der Windows-Manager desktop (DWM) z. B. D3DFMT_A16B16G16R16F für den Anzeigemodus verwendet), platziert die Laufzeit die unteren 32 Bit des Überlagerungsfarbschlüssels im DstColorKeyLow-Element der D3DDDI_OVERLAYINFO-Struktur und die oberen 32 Bits im DstColorKeyHigh-Element von D3DDDI_OVERLAYINFO.