IDirect3D9::CheckDeviceFormat-Methode (d3d9helper.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.
HRESULT CheckDeviceFormat(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] D3DFORMAT AdapterFormat,
[in] DWORD Usage,
[in] D3DRESOURCETYPE RType,
[in] D3DFORMAT CheckFormat
);
[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.
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.
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).
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d9helper.h (einschließlich D3D9.h) |
Bibliothek | D3D9.lib |