當您建立磚化資源時,維度、格式元素大小,以及 mipmaps 和/或 陣列切片的數量(如果適用的話)會決定支持整個表面區域所需的磚數目。 圖塊內的圖元/位元組配置是由實現決定的。 根據格式元素的大小,圖塊中容納的像素數目是固定且相同的,無論您是否使用標準排列方式。
給定表面大小和格式元素寬度將使用的圖格數目,會根據下列各節中的數據表,妥善定義及預測。 對於包含 mipmap 的資源,或是在表面尺寸未能填滿磚塊時,存在某些限制,這些會在 mipmap 封裝中討論。
只要應用程式不依賴以一種格式寫入記憶體的結果,並使用另一種格式讀取記憶體,不同的並排資源就可以指向相同的記憶體。 在受限制的情況下,如果格式屬於相同的格式系列(也就是說,它們具有相同的無類型父格式),應用程式可以依賴將一種格式寫入記憶體並以另一種格式讀取的結果。 例如,DXGI_FORMAT_R8G8B8A8_UNORM和DXGI_FORMAT_R8G8B8A8_UINT彼此相容,但與DXGI_FORMAT_R16G16_UNORM不相容。 應用程式必須保守地比對所有資源屬性,才能在兩個紋理之間重新解譯數據,因為磚模式非常保守地未定義。 不過,顯然,格式比較寬鬆。 格式只需要相容,如上所示。 例外狀況是,當從一種格式的別名到另一種格式的數據處理已妥善定義時:如果一個磚塊的所有位元都完全包含 0,則該磚塊可以與任何將記憶體內容解釋為 0 的格式一起使用(無論記憶體佈局為何)。 因此,可以使用格式DXGI_FORMAT_R8_UNORM將圖塊清除為0x00,然後再使用像DXGI_FORMAT_R32G32_FLOAT這樣的格式,而內容仍會顯示為(0.0f, 0.0f)。
圖格內數據的版面配置可能取決於資源屬性、其所在的子資源,以及子資源內的磚位置。 上述主要例外狀況說明:與其他資源屬性相等的相容格式,以及當所有紋素都相同模式時。
在本節中
主題 | 描述 |
---|---|
Texture2D 和 Texture2DArray 子資源分塊 |
這些表顯示了 Texture2D 和 Texture2DArray 子資源是如何進行拼貼的。 |
Texture3D 子資源貼圖 |
下表 顯示紋理 3D 子資源的排列方式。 |
緩衝區塊化 |
緩衝區 資源會分成 64KB 磚,如果大小不是 64KB 的倍數,則最後一個磚中有一些空白空間。 |
Mipmap 封裝 |
根據磚資源支援的 層級,具有特定尺寸的 mipmap 不會依照標準的磚形狀排列,而是以一種對應用程式來說不透明的方式一起封裝在一起。 |