Entwickeln für unterschiedliche Direct3D-Featureebenen (DirectX und C++)

Applies to Windows and Windows Phone

Windows 8 unterstützt eine Vielzahl an Hardwarekonfigurationen – von energieeffizienten Windows RT-Systemen bis hin zu High-End-Gaming-Desktops mit mehreren Grafikprozessoren (Graphics Processing Units, GPUs). Wenn Sie wissen, wie Sie Ihre App für Geräte mit unterschiedlicher Grafikleistung optimieren, können Sie eine breitere Zielgruppe für Ihre Windows Store-App mit DirectX und C++ erreichen.

Die Direct3D 11-API verwendet Featureebenen, um die Direct3D-Grafikfeatures zu kategorisieren, die von der unterschiedlichen Grafikhardware unterstützt werden. Jede Iteration von Direct3D hat nicht nur verschiedene Grafikfeatures (wie Geometrie und Kachelung), sondern auch unterschiedliche Renderingansätze hervorgebracht (z. B. Unterstützung für mehr Anweisungen und größere Texturen).

Hinweis  Die Direct3D-Featureebenen gelten nur für Windows Store-Apps mit DirectX. Wenn Sie eine Windows Store-App mit JavaScript oder eine Windows Store-App mit C++, C# oder Visual Basic entwickeln, gelten die Featureebenen nicht.

  • Applies to Windows Phone

Hinweis  Alle Windows Phone-Geräte unterstützen nur Featureebene 9_3.

Eine vollständige Übersicht darüber, welche Features von den einzelnen Direct3D-Featureebenen unterstützt werden, finden Sie unter Direct3D 11-Featureebenen.

Inhalt dieses Abschnitts

ThemaBeschreibung

Veröffentlichen im Windows Store

Es bestehen einige Anforderungen, die Sie beachten müssen, wenn Sie eine DirectX-Windows Store-App in C++ entwickeln und diese im Windows Store veröffentlichen möchten. In diesem Artikel wird behandelt, wie Sie die minimale Direct3D-Featureebene angeben, die von Ihrer Anwendung unterstützt wird, und diese Informationen in der App-Beschreibung im Windows Store veröffentlichen.

Implementieren von Schattenpuffern

Wenn Sie eine Windows-Runtime-App mit DirectX und C++ entwickeln möchten, die Schatteneffekte rendert und Direct3D-Funktionsebene 9_1, 9_2 oder 9_3 verwendet, müssen Sie eine bestimmte Teilmenge der Schattenpufferfunktionen von Direct3D 10_0+ verwenden, um Schatteneffekte richtig zu implementieren. Hier befassen wir uns mit der Implementierung von Schattenpuffern für Direct3D-Funktionsebene 9.

 

Bewährte Methoden zur Unterstützung von Featureebenen

Um die App auf die größte Vielfalt von Geräten und damit auf eine breitere Zielgruppe auszurichten, sollten Sie sicherstellen, dass Ihre App auf der minimalen Hardwarekonfiguration für Windows 8-Geräte (und somit für Windows RT-Geräte) ausgeführt wird. Diese entspricht einer Mindestfeatureebene von 9_1 und einem Arbeitsspeicher von 1 GB. Ausgehend von dieser Basis können Sie Unterstützung für höhere Featureebenen hinzufügen und die verbesserten Verarbeitungs- und Leistungsmerkmale nutzen, die durch erweiterte Hardware hinzugefügt werden – vielleicht sogar als einen separaten Renderingpfad in Ihrem Code. (Im Abschnitt Ressourcen finden Sie Links zu Beispielen und weiteren Informationen.) So können nicht nur Kunden mit energieeffizienten Geräten Ihr Spiel verwenden, sondern auch Kunden mit erweiterter Hardware können von den zusätzlichen Verarbeitungs- und Leistungsmerkmalen ihres eigenen Geräts profitieren.

Im Folgenden werden einige Hardwarefeatures aufgelistet, die Sie berücksichtigen sollten, wenn Sie Apps für Hardware mit höherer Leistung designen:

  • Größere Texturen (oder Texturen mit höherer Genauigkeit)
  • Detailliertere Modelle/Gitter
  • Zusätzliche MIP-Ebenen
  • Erweitere Shadermodelle
  • Anspruchsvollere Shaderverhalten (mehr Anweisungen pro Shader für Effekte mit komplexerer Berechnung)
  • Geometrieshader
  • Berechnungsshader
  • Kachelung
  • Zusätzliche Nachbearbeitung und Vollbild-Shadereffekte

Windows RT-Geräte müssen keine höhere Featureebenen als 9_1 unterstützen. Daher müssen DirectX-Anwendungen, die für die Windows RT-Architektur vorgesehen sind, auf die Featureebene 9_1 ausgerichtet werden. Um die größte Zielgruppe zu erreichen, sollten Sie Ihre Spiele und Apps als Basis für alle CPU-Architekturen auf den 9_1-Featuresatz ausrichten. Erstellen Sie mithilfe der Featureebene 10_0 oder höher ein visuell erweitertes Spiel für die Geräte, die diese Featureebene unterstützen. Es kann sein, dass ein Spiel eine höhere Feature-Ebene erfordert, als vom Gerät ausgeführt werden kann. In diesem Fall können Sie mit Direct2D auf 9_1-Systemen eine Warnung anzeigen, dass für die App eine höhere Featureebene erforderlich ist. Wir empfehlen, dass Sie hierzu das folgende Verfahren verwenden.



// This array defines the set of Direct3D hardware feature levels this app will support.
// Note the ordering should be preserved.
// Don't forget to declare your application's minimum required feature level in its
// description.  All applications are assumed to support 9.1 unless otherwise stated.
D3D_FEATURE_LEVEL featureLevels[] =
{
	D3D_FEATURE_LEVEL_11_1,
	D3D_FEATURE_LEVEL_11_0,
	D3D_FEATURE_LEVEL_10_1,
	D3D_FEATURE_LEVEL_10_0,
	D3D_FEATURE_LEVEL_9_3,
	D3D_FEATURE_LEVEL_9_2,
	D3D_FEATURE_LEVEL_9_1
};

// Create the DX11 API device object, and get a corresponding context.
ComPtr<ID3D11Device> device;
ComPtr<ID3D11DeviceContext> context;

D3D11CreateDevice(
	nullptr,                    // specify null to use the default adapter
	D3D_DRIVER_TYPE_HARDWARE,
	0,                          // leave as 0 unless software device
	creationFlags,              // optionally set debug and Direct2D compatibility flags
	featureLevels,              // list of feature levels this app can support
	ARRAYSIZE(featureLevels),   // number of entries in above list
	D3D11_SDK_VERSION,          // always set this to D3D11_SDK_VERSION for Windows Store apps
	&device,                    // returns the Direct3D device created
	&m_featureLevel,            // returns feature level of device created
	&context                    // returns the device immediate context
);

// ...

if (d3dDevice->GetFeatureLevel() < APP_MIN_FEATURE_LEVEL)
{
	// display warning using Direct2D
} 


Rufen Sie D3D11CreateDevice auf, um die Featureebenen für Windows Store-Apps mit DirectX anzufordern, wie im obigen Beispiel zu sehen.

Beim Testen Ihres Spiels können Sie ein System, dessen Hardware eine höhere Featureebene unterstützt, dazu zwingen, mithilfe des in Microsoft Visual Studio enthaltenen Tools dxcpl.exe eine niedrigere Featureebene zu emulieren. Mithilfe von dxcpl.exe können Sie beispielsweise erzwingen, dass ein Gerät mit Featureebene 11_1 die Featureebene 9_1 emuliert. Wenn Sie Windows RT-Geräte oder Plattformen mit einer niedrigeren Featureebene unterstützen möchten, sollten Sie dieses Tool fest in Ihren Testprozess integrieren.

Ressourcen

Das Direct3D-Beispiel für ein einfaches Sprite und das Direct3D-HLSL-Beispiel für einen Fraktal-Generator veranschaulichen diese Methoden zur Anpassung an verschiedene DirectX-Featureebenen.

Die Microsoft GDC 2012-Präsentation enthält weitere Infos zum Entwickeln von Spielen, die für das gesamte Spektrum der Windows 8-Hardware funktionieren: Entwickeln von Windows Store-Spielen für das gesamte Spektrum von Windows 8-Geräten.

Verwandte Themen

Entwickeln von Apps (C++ und DirectX)

 

 

Anzeigen:
© 2014 Microsoft