Freigeben über


So unterteilen Sie den Bereich einer Streamingressource

Wenn Sie eine Streamingressource erstellen, bestimmen die Dimensionen, die Formatelementgröße und die Anzahl der Mipmaps und/oder Arraysegmente (falls zutreffend) die Anzahl der Kacheln, die zum Sichern des gesamten Oberflächenbereichs erforderlich sind. Das Pixel-/Byte-Layout innerhalb von Kacheln wird durch die Implementierung bestimmt. Die Anzahl der Pixel, die abhängig von der Formatelementgröße in eine Kachel passen, ist fest und identisch, unabhängig davon, ob Sie einen Standardschwörm verwenden oder nicht.

Die Anzahl der Kacheln, die von einer bestimmten Oberflächengröße und Formatelementbreite verwendet werden, ist gut definiert und vorhersehbar, basierend auf den Tabellen in den folgenden Abschnitten. Für Ressourcen, die Mipmaps enthalten oder Fälle, in denen Oberflächenabmessungen keine Kachel füllen, sind einige Einschränkungen vorhanden; siehe Mipmap-Verpackung.

Unterschiedliche Streamingressourcen können auf identischen Arbeitsspeicher mit unterschiedlichen Formaten verweisen, solange Anwendungen nicht auf die Ergebnisse des Schreibens in den Speicher mit einem Format und lesen mit einem anderen angewiesen sind. Anwendungen können sich jedoch auf die Ergebnisse des Schreibens in den Speicher mit einem Format und dem Lesen mit einem anderen verlassen, wenn sich die Formate in derselben Formatfamilie befinden (d. a. sie haben dasselbe typlose übergeordnete Format). Beispielsweise sind DXGI_FORMAT_R8G8B8A8_UNORM und DXGI_FORMAT_R8G8B8A8_UINT miteinander kompatibel, aber nicht mit DXGI_FORMAT_R16G16_UNORM.

Eine Ausnahme ist, dass Blutungsdaten von einem Formataliasing zu einem anderen gut definiert sind: Wenn eine Kachel vollständig 0 für alle Bits enthält, kann diese Kachel mit jedem Format verwendet werden, das diese Speicherinhalte als 0 interpretiert (unabhängig vom Speicherlayout). Daher könnte eine Kachel gelöscht werden, um mit dem Format DXGI_FORMAT_R8_UNORM 0x00 zu 0x00 und dann mit einem Format wie DXGI_FORMAT_R32G32_FLOAT verwendet wird und der Inhalt weiterhin angezeigt wird (0,0f,0f,0f).

Das Layout von Daten innerhalb einer Kachel hängt nicht davon ab, wo die Kachel in einer Ressource insgesamt zugeordnet ist. So kann z. B. eine Kachel an unterschiedlichen Stellen einer Oberfläche gleichzeitig mit konsistentem Verhalten an allen Positionen wiederverwendet werden.

In diesem Abschnitt

Thema Beschreibung

Texture2D- und Texture2DArray-Unterressource

Diese Tabellen zeigen, wie Texture2D- und Texture2DArray-Unterressourcen nebeneinander angeordnet werden.

Textur3D-Unterressource tiling

Diese Tabelle zeigt, wie Texture3D-Unterressourcen nebeneinander angeordnet werden.

Pufferkacheln

Eine Pufferressource ist in 64 KB-Kacheln unterteilt, wobei in der letzten Kachel leerer Platz vorhanden ist, wenn die Größe kein Vielfaches von 64 KB ist.

Mipmap-Verpackung

Je nach Größe einer Streamingressource, formatieren, Anzahl von Mipmaps und Arraysegmenten können einige Mips (pro Arraysegment) in eine Bestimmte Anzahl von Kacheln gepackt werden.

 

Erstellen von Streamingressourcen