IDirect3D9::CheckDeviceFormat-Methode (d3d9.h)

Bestimmt, ob ein Oberflächenformat als angegebener Ressourcentyp verfügbar ist und auf einem Gerät, das diesen Adapter darstellt, als Textur- oder Tiefenschablonenpuffer oder als Renderziel oder eine beliebige Kombination aus den dreien verwendet werden kann.

Syntax

HRESULT CheckDeviceFormat(
  [in] UINT            Adapter,
  [in] D3DDEVTYPE      DeviceType,
  [in] D3DFORMAT       AdapterFormat,
  [in] DWORD           Usage,
  [in] D3DRESOURCETYPE RType,
  [in] D3DFORMAT       CheckFormat
);

Parameter

[in] Adapter

Typ: UINT

Ordnungszahl, die den abzufragenden Anzeigeadapter angibt. D3DADAPTER_DEFAULT ist immer der primäre Grafikkarte. Diese Methode gibt D3DERR_INVALIDCALL zurück, wenn dieser Wert der Anzahl von Grafikkarten im System entspricht oder überschreitet.

[in] DeviceType

Typ: D3DDEVTYPE

Mitglied des D3DDEVTYPE aufgezählten Typs, der den Gerätetyp identifiziert.

[in] AdapterFormat

Typ: D3DFORMAT

Mitglied des D3DFORMAT aufgezählten Typs, der das Format des Anzeigemodus identifiziert, in dem der Adapter platziert wird.

[in] Usage

Typ: DWORD

Nutzungsoptionen für die Oberfläche angefordert. Verwendungsoptionen sind eine beliebige Kombination aus D3DUSAGE und D3DUSAGE_QUERY Konstanten (nur eine Teilmenge der D3DUSAGE Konstanten ist für CheckDeviceFormat gültig; siehe Tabelle auf der seite D3DUSAGE).

[in] RType

Typ: D3DRESOURCETYPE

Ressourcentyp, der für die Verwendung mit dem abgefragten Format angefordert wird. Mitglied der D3DRESOURCETYPE.

[in] CheckFormat

Typ: D3DFORMAT

Format der oberflächen, die verwendet werden können, wie in Usage definiert. Mitglied der D3DFORMAT.

Rückgabewert

Typ: HRESULT

Wenn das Format für die angeforderte Verwendung mit dem angegebenen Gerät kompatibel ist, gibt diese Methode D3D_OK zurück.

D3DERR_INVALIDCALL wird zurückgegeben, wenn der Adapter die Anzahl der Grafikkarten im System entspricht oder überschreitet oder wenn DeviceType nicht unterstützt wird.

D3DERR_NOTAVAILABLE wird zurückgegeben, wenn das Format für das Gerät für diese Verwendung nicht akzeptabel ist.

Hinweise

Hier finden Sie einige Beispiele für die Verwendung von CheckDeviceFormat , um die Hardwareunterstützung von zu überprüfen:

  • Ein einfaches Oberflächenformat außerhalb des Bildschirms: Geben Sie "Usage = 0" und "RType = D3DRTYPE_SURFACE" an.
  • Ein Tiefenschablonenformat: Der folgende Codeausschnitt testet das im Tiefenschablonenformat bestandene:
    
    BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              D3DUSAGE_DEPTHSTENCIL,
                                              D3DRTYPE_SURFACE,
                                              DepthFormat);
        
        return SUCCEEDED( hr );
    }
    

    Weitere Informationen zum Enumerationsprozess finden Sie unter Auswählen eines Geräts (Direct3D 9).

  • Kann diese Textur in einem bestimmten Format gerendert werden: In diesem Beispiel wird anhand des aktuellen Anzeigemodus überprüft, ob das Texturformat mit dem spezifischen Backpufferformat kompatibel ist:
    
    BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              0,
                                              D3DRTYPE_TEXTURE,
                                              TextureFormat);
        
        return SUCCEEDED( hr );
    }
    
  • Alphamischung in einem Pixel-Shader: Legen Sie die Verwendung auf D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING fest. Erwarten Sie, dass dies für alle Gleitkommarenderziele fehlschlägt.
  • Automatische Generierung von Mipmaps: Legen Sie die Verwendung auf D3DUSAGE_AUTOGENMIPMAP fest. Wenn bei der automatischen mipmap-Generierung ein Fehler auftritt, erhält die Anwendung eine Nicht-mipmapped-Textur. Das Aufrufen dieser Methode wird als Hinweis betrachtet, sodass diese Methode D3DOK_NOAUTOGEN (ein gültiger Erfolgscode) zurückgeben kann, wenn das einzige, was fehlschlägt, die Mipmap-Generierung ist. Weitere Informationen zur mipmap-Generierung finden Sie unter Automatische Generierung von Mipmaps (Direct3D 9).
Beim Migrieren von Code von Direct3D 9 zu Direct3D 10 ist das Direct3D 10-Äquivalent von CheckDeviceFormat CheckFormatSupport.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d9.h (einschließlich D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

IDirect3D9