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 Array-Slices (falls zutreffend) die Anzahl der Kacheln, die zum Sichern der gesamten Oberfläche erforderlich sind. Das Pixel-/Bytelayout innerhalb von Kacheln wird durch die Implementierung bestimmt. Die Anzahl der Pixel, die in eine Kachel passen, ist abhängig von der Größe des Formatelements festgelegt und identisch, unabhängig davon, ob Sie einen Standard-Swizzle verwenden oder nicht.

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

Unterschiedliche Streamingressourcen können auf identischen Arbeitsspeicher mit unterschiedlichen Formaten verweisen, solange Anwendungen nicht auf die Ergebnisse angewiesen sind, die beim Schreiben in den Speicher mit einem Format und beim Lesen mit einem anderen verwendet werden. Anwendungen können sich jedoch auf die Ergebnisse des Schreibens in den Arbeitsspeicher mit einem Format und des Lesens mit einem anderen verlassen, wenn sich die Formate in derselben Formatfamilie befinden (d. a. sie haben das gleiche 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 besteht darin, dass das Ausbluten von Daten von einem Formataliasing in ein anderes gut definiert ist: Wenn eine Kachel für alle Bits vollständig 0 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 in 0x00 mit dem Format DXGI_FORMAT_R8_UNORM gelöscht und dann mit einem Format wie DXGI_FORMAT_R32G32_FLOAT verwendet werden, und der Inhalt scheint weiterhin (0,0f, 0.0f) zu sein.

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

In diesem Abschnitt

Thema BESCHREIBUNG

Unterteilung von Texture2D- und Texture2DArray-Unterressourcen

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

Unterteilung von Texture3D-Unterressourcen

In dieser Tabelle wird gezeigt, wie Texture3D-Unterressourcen kacheln.

Pufferanordnung

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

MipMap-Verpackung

Je nach Größe, Format, Anzahl der Mipmaps und Arrayslices einer Streamingressource kann eine bestimmte Anzahl von Mips (pro Arrayslice) in eine bestimmte Anzahl von Kacheln gepackt werden.

 

Erstellen von Streamingressourcen