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 typisch oder weniger typisch sind. Sie können steuern, ob Ressourcen sowohl Lese- als auch Schreibzugriff haben; Sie können Ressourcen nur für die CPU, GPU oder beides zugänglich machen. Natürlich gibt es Geschwindigkeit im Vergleich zu Funktionalitätskonflikten – je mehr Funktionalität Sie für eine Ressource zulassen, desto weniger Leistung sollten Sie erwarten.
Da eine Anwendung häufig viele Texturen verwendet, hat Direct3D auch das Konzept eines Texturarrays, um die Texturverwaltung zu vereinfachen. Ein Texturarray enthält eine oder mehrere Texturen (alle gleichen Typs und Dimensionen), die innerhalb einer Anwendung oder von Shadern indiziert werden können. Mit Texturarrays können Sie eine einzelne Schnittstelle mit mehreren Indizes verwenden, um auf viele Texturen zuzugreifen. Sie können beliebig viele Texturarrays erstellen, um unterschiedliche Texturtypen zu verwalten.
Nachdem Sie die von Der Anwendung verwendeten Ressourcen erstellt haben, stellen Sie eine Verbindung her oder binden jede Ressource an die Pipelinephasen, die sie verwenden. Dazu wird eine Bindungs-API aufgerufen, die einen Zeiger auf die Ressource annimmt. Da mehr als eine Pipelinestufe Zugriff auf dieselbe Ressource benötigt, verfügt Direct3D über das Konzept einer Ressourcenansicht. Eine Ansicht identifiziert den Teil einer Ressource, auf die zugegriffen werden kann. Sie können m-Ansichten oder eine Ressource erstellen und an n-Pipelinephasen binden, vorausgesetzt, Sie befolgen Bindungsregeln für freigegebene Ressourcen (die Laufzeit generiert Fehler zur Kompilierungszeit, wenn sie nicht).
Eine Ressourcenansicht bietet ein allgemeines Modell für den Zugriff auf eine Ressource (z. B. Texturen oder Puffer). Da Sie eine Ansicht verwenden können, um die Laufzeit mitzuteilen, auf welche Daten zugegriffen werden soll und wie darauf zugegriffen werden kann, ermöglichen Ressourcenansichten das Erstellen weniger Ressourcen. Das heißt, Sie können Ressourcen für eine bestimmte Größe zur Kompilierungszeit erstellen und dann den Datentyp innerhalb der Ressource deklarieren, wenn die Ressource an die Pipeline gebunden wird. Ansichten bieten viele Funktionen für die Verwendung von Ressourcen, z. B. die Möglichkeit, Tiefen-/Schablonenoberflächen im Shader zu lesen, dynamische Cubemaps in einem einzigen Durchlauf zu generieren und gleichzeitig in mehreren Segmenten eines Volumes zu rendern.
In diesem Abschnitt
Thema | Beschreibung |
---|---|
Verschiedene Ressourcentypen weisen ein eigenes Layout (oder Speicherbedarf) auf. Alle von der Direct3D-Pipeline verwendeten Ressourcen werden von zwei grundlegenden Ressourcentypen abgeleitet: Puffer und Texturen. Ein Puffer ist eine Sammlung von Rohdaten (Elementen); eine Textur ist eine Sammlung von Texeln (Texturelemente). |
|
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 Handbuch werden grundlegende Themen zum Auswählen der ressourcen behandelt, die von Ihrer Anwendung benötigt werden. |
|
Verwendungskennzeichnungen geben an, wie die Anwendung die Ressourcendaten verwenden möchte, um Ressourcen im leistungsstärksten Speicherbereich zu platzieren. Ressourcendaten werden über Ressourcen hinweg kopiert, sodass die CPU oder GPU ohne Auswirkungen auf die Leistung darauf zugreifen kann. |
|
In Direct3D wird auf Texturressourcen mit einer Ansicht zugegriffen, bei der es sich um einen Mechanismus für die Hardwareinterpretation einer Ressource im Arbeitsspeicher handelt. Eine Ansicht ermöglicht es einer bestimmten Pipelinephase, nur auf die benötigten Unterressourcen zuzugreifen, in der von der Anwendung gewünschten Darstellung. |