Unterressourcen (Direct3D 11-Grafiken)

In diesem Thema werden Texturunterressourcen oder Teile einer Ressource beschrieben.

Direct3D kann auf eine gesamte Ressource verweisen oder auf Teilmengen einer Ressource verweisen. Der Begriff Unterressource bezieht sich auf eine Teilmenge einer Ressource.

Ein Puffer wird als einzelne Unterressource definiert. Texturen sind etwas komplizierter, da es verschiedene Texturtypen (1D, 2D usw.) gibt, von denen einige Mipmap-Ebenen und/oder Texturarrays unterstützen. Ab dem einfachsten Fall wird eine 1D-Textur als einzelne Unterressource definiert, wie in der folgenden Abbildung dargestellt.

Abbildung einer 1D-Textur

Dies bedeutet, dass das Array von Texels, aus denen eine 1D-Textur besteht, in einer einzelnen Unterressource enthalten ist.

Wenn Sie eine 1D-Textur mit drei Mipmap-Ebenen erweitern, kann sie wie in der folgenden Abbildung visualisiert werden.

Abbildung einer 1D-Textur mit drei Mipmap-Ebenen

Stellen Sie sich dies als eine einzelne Textur vor, die aus drei Unterressourcen besteht. Eine Unterressource kann mithilfe der Detailebene (Level-of-Detail, LOD) für eine einzelne Textur indiziert werden. Wenn Sie ein Array von Texturen verwenden, erfordert der Zugriff auf eine bestimmte Unterressource sowohl den LOD als auch die bestimmte Textur. Alternativ kombiniert die API diese beiden Informationen in einem einzelnen nullbasierten Unterressourcenindex, wie in der folgenden Abbildung dargestellt.

Abbildung eines nullbasierten Unterressourcenindex

Auswählen von Unterressourcen

Einige APIs greifen auf eine gesamte Ressource zu (z. B . die ID3D11DeviceContext::CopyResource-Methode ), andere greifen auf einen Teil einer Ressource zu (z. B . die ID3D11DeviceContext::UpdateSubresource-Methode oder die ID3D11DeviceContext::CopySubresourceRegion-Methode ). Die Methoden, die auf einen Teil einer Ressource zugreifen, verwenden in der Regel eine Ansichtsbeschreibung (z. B. die D3D11_TEX2D_ARRAY_DSV-Struktur ), um die unterressourcen anzugeben, auf die zugegriffen werden soll.

Die Abbildungen in den folgenden Abschnitten zeigen die Begriffe, die von einer Ansichtsbeschreibung beim Zugriff auf ein Array von Texturen verwendet werden.

Arrayslice

Bei einem Array von Texturen, jede Textur mit Mipmaps, enthält ein Array-Slice (dargestellt durch das weiße Rechteck) eine Textur und alle ihre Unterressourcen, wie in der folgenden Abbildung gezeigt.

Abbildung eines Arrayslices

Mip Slice

Ein mip-Slice (dargestellt durch das weiße Rechteck) enthält eine Mipmap-Ebene für jede Textur in einem Array, wie in der folgenden Abbildung dargestellt.

Abbildung eines Mip-Slices

Auswählen einer einzelnen Unterressource

Sie können diese beiden Arten von Slices verwenden, um eine einzelne Unterressource auszuwählen, wie in der folgenden Abbildung gezeigt.

Abbildung der Auswahl einer Unterressource mithilfe eines Array-Slices und eines mip-Slices

Auswählen mehrerer Unterressourcen

Alternativ können Sie diese beiden Arten von Slices mit der Anzahl der Mipmap-Ebenen und/oder der Anzahl der Texturen verwenden, um mehrere Unterressourcen auszuwählen, wie in der folgenden Abbildung gezeigt.

Abbildung der Auswahl mehrerer Unterressourcen

Hinweis

Eine Renderzielansicht kann nur eine einzelne Unterressource oder einen Mip-Slice verwenden und darf keine Unterressourcen aus mehr als einem MIP-Slice enthalten. Das heißt, jede Textur in einer Renderzielansicht muss dieselbe Größe aufweisen. Eine Shaderressourcenansicht kann einen beliebigen rechteckigen Bereich von Unterressourcen auswählen, wie in der Abbildung dargestellt.

 

Ressourcen