Share via


IDirect3D9::CheckDeviceType-Methode (d3d9helper.h)

Überprüft, ob ein Gerätetyp mit Hardwarebeschleunigt auf diesem Adapter verwendet werden kann.

Syntax

HRESULT CheckDeviceType(
       UINT       iAdapter,
  [in] D3DDEVTYPE DevType,
       D3DFORMAT  DisplayFormat,
  [in] D3DFORMAT  BackBufferFormat,
  [in] BOOL       bWindowed
);

Parameter

iAdapter

Typ: UINT

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

[in] DevType

Typ: D3DDEVTYPE

Member des D3DDEVTYPE aufgezählten Typs, der den zu überprüfenden Gerätetyp angibt.

DisplayFormat

Typ: D3DFORMAT

Member des D3DFORMAT aufgezählten Typs, der das Format des Adapteranzeigemodus angibt, für den der Gerätetyp überprüft werden soll. Beispielsweise werden einige Geräte nur im 16-Bit-Modus pro Pixel betrieben.

[in] BackBufferFormat

Typ: D3DFORMAT

Zurückpufferformat. Weitere Informationen zu Formaten finden Sie unter D3DFORMAT. Dieser Wert muss eines der Renderzielformate sein. Sie können GetAdapterDisplayMode verwenden, um das aktuelle Format abzurufen.

Bei Anwendungen mit Fenstern muss das Hintergrundpufferformat nicht mit dem Anzeigemodusformat übereinstimmen, wenn die Hardware die Farbkonvertierung unterstützt. Der Satz möglicher Backpufferformate ist eingeschränkt, aber die Runtime ermöglicht es, jedes gültige Backpufferformat für jedes Desktopformat darzustellen. Es besteht die zusätzliche Anforderung, dass das Gerät auf dem Desktop funktionsfähig ist, da Geräte in der Regel nicht im Modus 8 Bit pro Pixel betrieben werden.

Vollbildanwendungen können keine Farbkonvertierung durchführen.

D3DFMT_UNKNOWN ist für den Fenstermodus zulässig.

[in] bWindowed

Typ: BOOL

Wert, der angibt, ob der Gerätetyp im Vollbildmodus oder im Fenstermodus verwendet wird. Wenn true festgelegt ist, wird die Abfrage für Anwendungen mit Fenstern ausgeführt. Andernfalls sollte dieser Wert false festgelegt werden.

Rückgabewert

Typ: HRESULT

Wenn das Gerät auf diesem Adapter verwendet werden kann, wird D3D_OK zurückgegeben.

D3DERR_INVALIDCALL wird zurückgegeben, wenn adapter die Anzahl der Grafikkarten im System gleich oder überschreitet. D3DERR_INVALIDCALL wird auch zurückgegeben, wenn CheckDeviceType ein Gerät angegeben hat, das nicht vorhanden ist.

D3DERR_NOTAVAILABLE wird zurückgegeben, wenn das angeforderte Backpufferformat nicht unterstützt wird oder wenn die Hardwarebeschleunigung für die angegebenen Formate nicht verfügbar ist.

Hinweise

Ein Hal-Gerätetyp erfordert hardwarebeschleunigung. Anwendungen können CheckDeviceType verwenden, um zu ermitteln, ob die erforderliche Hardware und Treiber vorhanden sind, um ein hal-Gerät zu unterstützen.

Vollbildanwendungen sollten kein DisplayFormat angeben, das einen Alphakanal enthält. Dies führt zu einem fehlgeschlagenen Aufruf. Beachten Sie, dass im Hintergrundpuffer ein Alphakanal vorhanden sein kann, die beiden Anzeigeformate jedoch in allen anderen Punkten identisch sein müssen. Wenn beispielsweise DisplayFormat = D3DFMT_X1R5G5B5, enthalten gültige Werte für BackBufferFormat D3DFMT_X1R5G5B5 und D3DFMT_A1R5G5B5, schließen jedoch D3DFMT_R5G6B5 aus.

Das folgende Codefragment zeigt, wie Sie CheckDeviceType verwenden können, um zu testen, ob ein bestimmter Gerätetyp auf diesem Adapter verwendet werden kann.


if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT, 
                                        D3DDEVTYPE_HAL, 
                                        DisplayFormat, 
                                        BackBufferFormat, 
                                        bIsWindowed)))
    
     return S_OK;
// There is no HAL on this adapter using this render-target format. 
// Try again, using another format.

Dieser Code gibt S_OK zurück, wenn das Gerät auf dem Standardadapter mit dem angegebenen Oberflächenformat verwendet werden kann.

Die Verwendung von CheckDeviceType zum Testen der Kompatibilität zwischen einem Hintergrundpuffer, der sich vom Anzeigeformat unterscheidet, gibt entsprechende Werte zurück. Dies bedeutet, dass der Anruf die Gerätefunktionen widerspiegelt. Wenn das Gerät nicht im angeforderten Backpufferformat gerendert werden kann, gibt der Aufruf weiterhin D3DERR_NOTAVAILABLE zurück. Wenn das Gerät im Format rendern kann, die Farbkonvertierung jedoch nicht durchführen kann, wird der Rückgabewert ebenfalls D3DERR_NOTAVAILABLE. Anwendungen können die Hardwareunterstützung für die Präsentation selbst ermitteln, indem sie CheckDeviceFormatConversion aufrufen. Es wird keine Softwareemulation für die Farbkonvertierung selbst angeboten.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d9helper.h (include D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

IDirect3D9