Ressourcen

Eine Ressource ist ein Bereich im Speicher, auf den von der Direct3D-Pipeline zugegriffen werden kann. Damit die Pipeline effizient auf den Speicher zugreifen kann, müssen für die Pipeline bereitgestellte Daten (etwa Eingabegeometrie, Shaderressourcen und Texturen) in einer Ressource gespeichert werden. Es gibt zwei Arten von Ressourcen, aus denen alle Direct3D-Ressourcen abgeleitet sind: Puffer und Textur. Für jede Pipelinephase können bis zu 128 Ressourcen aktiv sein.

Jede Anwendung erstellt in der Regel viele Ressourcen. Beispiele für Ressourcen sind Vertexpuffer, Indexpuffer, Konstantenpuffer, Texturen und Shaderressourcen. Es gibt mehrere Optionen, die bestimmen, wie Ressourcen verwendet werden können. Sie können Ressourcen erstellen, die stark oder weniger typisiert sind. Sie können steuern, ob Ressourcen sowohl Lese- als auch Schreibzugriff haben. Sie können Ressourcen nur für die CPU, GPU oder beide zugänglich machen. Natürlich gibt es einen Kompromiss zwischen Geschwindigkeit und Funktionalität : Je mehr Funktionalität Sie einer Ressource erlauben, desto weniger Leistung sollten Sie erwarten.

Da eine Anwendung häufig viele Texturen verwendet, verfügt Direct3D auch über das Konzept eines Texturarrays, um die Texturverwaltung zu vereinfachen. Ein Texturarray enthält mindestens eine Textur (alle vom gleichen Typ und denselben Dimensionen), die innerhalb einer Anwendung oder durch Shader indiziert werden können. Mit Texturarrays können Sie eine einzelne Schnittstelle mit mehreren Indizes verwenden, um auf viele Texturen zuzugreifen. Sie können so viele Texturarrays erstellen, um verschiedene Texturtypen zu verwalten, wie Sie benötigen.

Nachdem Sie die von Ihrer Anwendung verwendeten Ressourcen erstellt haben, stellen Sie eine Verbindung zwischen den einzelnen Ressourcen her oder binden sie an die Pipelinephasen, in denen sie verwendet werden. Dies wird durch Aufrufen einer Bindungs-API erreicht, die einen Zeiger auf die Ressource verwendet. Da mehrere Pipelinestufen möglicherweise Zugriff auf dieselbe Ressource benötigen, verfügt Direct3D über das Konzept einer Ressourcenansicht. Eine Ansicht identifiziert den Teil einer Ressource, auf den zugegriffen werden kann. Sie können m-Ansichten oder eine Ressource erstellen und sie an n Pipelinephasen binden, vorausgesetzt, Sie befolgen Bindungsregeln für freigegebene Ressourcen (die Runtime generiert fehler zur Kompilierzeit, wenn sie dies nicht getan haben).

Eine Ressourcenansicht stellt ein allgemeines Modell für den Zugriff auf eine Ressource (z. B. Texturen oder Puffer) bereit. Da Sie eine Ansicht verwenden können, um der Runtime mitzuteilen, auf welche Daten zugegriffen werden soll und wie darauf zugegriffen werden soll, können Sie mit Ressourcensichten typlose Ressourcen erstellen. Das heißt, Sie können ressourcen für eine bestimmte Größe zur Kompilierzeit erstellen und dann den Datentyp innerhalb der Ressource deklarieren, wenn die Ressource an die Pipeline gebunden wird. Ansichten machen viele Funktionen für die Verwendung von Ressourcen verfügbar, z. B. die Möglichkeit, Tiefen-/Schablonenflächen im Shader zurückzulesen, dynamische Cubemaps in einem einzigen Durchlauf zu generieren und gleichzeitig in mehreren Slices eines Volumes zu rendern.

In diesem Abschnitt

Thema BESCHREIBUNG

Ressourcentypen

Verschiedene Arten von Ressourcen haben ein unterschiedliches Layout (oder Arbeitsspeicherbedarf). Alle von der Direct3D-Pipeline verwendeten Ressourcen stammen von zwei grundlegenden Ressourcentypen ab: Puffern und Texturen. Ein Puffer ist eine Sammlung von Rohdaten (Elementen); eine Textur ist eine Sammlung von Texels (Texturelementen).

Auswählen einer Ressource

Eine Ressource ist eine Sammlung von Daten, die von der 3D-Pipeline verwendet werden. Das Erstellen von Ressourcen und das Definieren ihres Verhaltens ist der erste Schritt zur Programmierung Ihrer Anwendung. In diesem Leitfaden werden grundlegende Themen für die Auswahl der für Ihre Anwendung benötigten Ressourcen behandelt.

Kopieren und Zugreifen auf Ressourcendaten

Verwendungsflags geben an, wie die Anwendung die Ressourcendaten verwenden möchte, um Ressourcen im möglichst leistungsfähigen Speicherbereich zu platzieren. Ressourcendaten werden ressourcenübergreifend kopiert, sodass die CPU oder GPU ohne Beeinträchtigung der Leistung darauf zugreifen kann.

Texturansichten

In Direct3D wird mit einer Ansicht auf Texturressourcen zugegriffen. Dies ist ein Mechanismus für die Hardwareinterpretation einer Ressource im Arbeitsspeicher. Eine Ansicht ermöglicht es einer bestimmten Pipelinephase, nur auf die benötigten Unterressourcen in der von der Anwendung gewünschten Darstellung zuzugreifen.

 

Koordinatensysteme

Leitfaden zum Lernen von Direct3D-Grafiken

Gleitkommaregeln

Konvertieren von Datentypen