Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Direct3D 10 wird der Gerätezustand in Zustandsobjekte gruppiert, die die Kosten für Zustandsänderungen erheblich reduzieren. Es gibt mehrere Zustandsobjekte, und jeder dient zum Initialisieren eines Zustands für eine bestimmte Pipelinephase. Sie können bis zu 4096 jedes Typs von Zustandsobjekten erstellen.
- Input-Layout State
- Rasterizerstatus
- Depth-Stencil State
- Blend State
- Sampler State
- Leistungsüberlegungen
- Verwandte Themen
Input-Layout Staat
Diese Gruppe des Zustands (siehe D3D10_INPUT_ELEMENT_DESC) bestimmt, wie die Eingabeassemblerphase Daten aus den Eingabepuffern liest und zur Verwendung durch den Vertex-Shader zusammenfügt. Dies schließt den Zustand ein, z. B. die Anzahl der Elemente im Eingabepuffer und die Signatur der Eingabedaten. Die Eingabeassemblerphase ist eine neue Phase in der Pipeline, deren Auftrag darin besteht, Grundtypen aus dem Arbeitsspeicher in die Pipeline zu streamen.
Informationen zum Erstellen eines Eingabelayoutstatusobjekts finden Sie unter CreateInputLayout.
Rasterizerstatus
Diese Statusgruppe (siehe D3D10_RASTERIZER_DESC) initialisiert die Rasterizerstufe. Dieses Objekt enthält Zustand wie Füll- oder Ullmodi, Aktivieren eines Scherenrechtecks zum Abschneiden und Festlegen von Multisampleparametern. In dieser Phase werden Grundtypen in Pixel gerastert und Vorgänge wie Clipping und Zuordnung von Grundtypen zum Viewport ausgeführt.
Informationen zum Erstellen eines Rasterizerstatusobjekts finden Sie unter CreateRasterizerState.
Depth-Stencil Staat
Diese Gruppe des Zustands (siehe D3D10_DEPTH_STENCIL_DESC) initialisiert den Tiefenschablonenteil der Ausgabezusammenführungsstufe. Genauer gesagt initialisiert dieses Objekt Tiefen- und Schablonentests.
Informationen zum Erstellen eines Tiefenschablonenzustandsobjekts finden Sie unter CreateDepthStencilState.
Blend-Zustand
Diese Gruppe des Zustands (siehe D3D10_BLEND_DESC) initialisiert den Vermischungsteil der Ausgabezusammenführungsphase.
Informationen zum Erstellen eines Blend-State-Objekts finden Sie unter CreateBlendState.
Samplerstatus
Diese Statusgruppe (siehe D3D10_SAMPLER_DESC) initialisiert ein Samplerobjekt. Ein Samplerobjekt wird von den Shaderphasen verwendet, um Texturen im Arbeitsspeicher zu filtern.
Unterschiede zwischen Direct3D 9 und Direct3D 10:
- In Direct3D 10 ist das Samplerobjekt nicht mehr an eine bestimmte Textur gebunden, es beschreibt lediglich, wie Sie nach angefügten Ressourcen filtern können.
Informationen zum Erstellen eines Samplerstatusobjekts finden Sie unter CreateSamplerState.
Leistungsüberlegungen
Das Entwerfen der API für die Verwendung von Statusobjekten führt zu mehreren Leistungsvorteilen. Dazu gehören die Überprüfung des Zustands zur Objekterstellungszeit, das Zwischenspeichern von Zustandsobjekten in der Hardware und eine deutliche Verringerung des Zustands, der während eines Zustandseinstellungs-API-Aufrufs übergeben wird (durch Übergeben eines Handles an das Zustandsobjekt anstelle des Zustands).
Um diese Leistungsverbesserungen zu erzielen, sollten Sie ihre Zustandsobjekte erstellen, wenn die Anwendung gestartet wird, genau vor der Renderschleife. Zustandsobjekte sind unveränderlich, d. h., nachdem sie erstellt wurden, können Sie sie nicht mehr ändern. Stattdessen müssen Sie sie zerstören und neu erstellen. Um diese Einschränkung zu bewältigen, können Sie bis zu 4096 jeder Art von Zustandsobjekten erstellen. Sie können z. B. mehrere Samplerobjekte mit verschiedenen Samplerzustandskombinationen erstellen. Das Ändern des Samplerzustands erfolgt dann durch Aufrufen der entsprechenden Set-API, die ein Handle an das Objekt übergibt (im Gegensatz zum Samplerstatus). Dadurch wird der Aufwand während jedes Renderframes erheblich reduziert, da die Anzahl der Aufrufe und die Datenmenge erheblich reduziert werden.
Alternativ können Sie das Effektsystem verwenden, das die effiziente Erstellung und Zerstörung von Zustandsobjekten für Ihre Anwendung automatisch verwaltet.
Verwandte Themen