Wie der Bereich einer kachelierten Ressource gekachelt wird
Wenn Sie eine gekachelte Ressource erstellen, bestimmen die Dimensionen, die Größe des Elements formatieren und die Anzahl der Mipmaps und/oder Arrayschnitte (sofern zutreffend) die Anzahl der Kacheln, die erforderlich sind, um den gesamten Oberflächenbereich zu sichern. Das Pixel-/Byte-Layout innerhalb von Kacheln wird durch die Implementierung bestimmt. Die Anzahl der Pixel, die je nach Formatelementgröße in eine Kachel passen, ist fest und identisch, unabhängig davon, ob Sie einen Standardschwört 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 oder Fälle enthalten, in denen Oberflächenabmessungen keine Kachel füllen, sind einige Einschränkungen vorhanden und werden in der Mipmap-Verpackung behandelt.
Unterschiedliche gekachelte Ressourcen können auf identischen Speicher 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. In eingeschränkten Umständen können Anwendungen jedoch auf die Ergebnisse des Schreibens in den Speicher mit einem Format und dem Lesen mit einem anderen angewiesen werden, wenn sich die Formate in derselben Formatfamilie befinden (das heißt, sie verfügen über 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 Anwendung musskonservativ alle Ressourceneigenschaften übereinstimmen, um Daten zwischen zwei Texturen neu zu interpretieren, da Kachelmuster sehr konservative undefiniert sind. Das Format ist jedoch offensichtlich laxer. Die Formate müssen nur kompatibel sein, wie oben dargestellt. Eine Ausnahme besteht darin, 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). Eine Kachel könnte also gelöscht werden, um 0x00 mit dem Format DXGI_FORMAT_R8_UNORM zu DXGI_FORMAT_R8_UNORM und dann mit einem Format wie DXGI_FORMAT_R32G32_FLOAT verwendet werden und die Inhalte weiterhin angezeigt werden (0,0f,0,0f).
Das Layout von Daten innerhalb einer Kachel hängt möglicherweise von Ressourceneigenschaften, der Unterressource ab, in der sie sich befindet, und der Kachelspeicherort innerhalb der Unterressource. Die wichtigsten Ausnahmen sind oben dargestellt: kompatible Formate mit anderen Ressourceneigenschaften sind gleich und wenn alle Texel dasselbe Muster sind.
In diesem Abschnitt
Thema | BESCHREIBUNG |
---|---|
Unterteilung von Texture2D- und Texture2DArray-Unterressourcen |
Diese Tabellen zeigen, wie Texture2D - und Texture2DArray-Unterressourcen gekachelt werden. |
Unterteilung von Texture3D-Unterressourcen |
In dieser Tabelle wird gezeigt, wie Texture3D-Unterressourcen gekachelt werden. |
Pufferanordnung |
Eine Pufferressource ist in 64 KB-Kacheln unterteilt, wobei einige leerer Platz in der letzten Kachel vorhanden ist, wenn die Größe kein Vielfaches von 64 KB ist. |
MipMap-Verpackung |
Abhängig von der Unterstützung der gekachelten Ressourcen folgen Mipmaps mit bestimmten Dimensionen nicht den Standardkachel-Shapes und werden als alle zusammen miteinander in einer Weise gepackt, die für die Anwendung undurchsichtig ist. |