Share via


磁片區並排資源

磁片區 (3D) 紋理可作為並排資源,指出磚解析度為三維。

概觀

並排式資源會將 D3D Resource 物件與其備份記憶體分離, (資源在過去具有與其備份記憶體) 的 1:1 關聯性。 這允許各種有趣的案例,例如在紋理資料中串流,以及重複使用或減少記憶體使用量

D3D11.2 支援 2D 紋理並排資源。 D3D12 和 D3D11.3 新增對 3D 並排紋理的支援。

2D 紋理所使用的一般資源維度是 4 x 4 磚,3D 紋理則為 4 x 4 x 4 磚。

位/圖元 (1 個樣本/圖元) 磚尺寸 (圖元,w x h x d)
8 64 x 32 x 32
16 32 x 32 x 32
32 32 x 32 x 16
64 32 x 16 x 16
128 16 x 16 x 16
BC 1,4 128 x 64 x 16
BC 2,3,5,6,7 64 x 64 x 16

 

請注意,磚資源不支援下列格式:96bpp 格式、視訊格式、R1_UNORM、R8G8_B8G8_UNORM、R8R8_G8B8_UNORM。

在下圖中,深灰色代表 Null 圖格。

紋理 3D 並排顯示資源預設對應 (最詳細的 mip)

最詳細 mip 的預設對應

紋理 3D 並排顯示資源預設對應 (第二個最詳細的 mip)

第二個最詳細 mip 的預設對應

紋理 3D 並排顯示資源 (最詳細的 mip)

下列程式碼會在最詳細的 Mip 上設定 3D 並排資源。

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 0;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 63;

3d 並排顯示資源的最詳細對應

紋理 3D 並排資源 (第二個最詳細的 mip)

下列程式碼會設定 3D 並排顯示的資源,以及第二個最詳細的 mip:

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 1;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 6;

第二個最詳細的 3d 並排顯示資源對應

紋理 3D 並排顯示資源 (單一磚)

下列程式碼會設定單一磚資源:

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 1;
trCoord.Z = 1;
trCoord.Subresource = 0;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;

單一磚

紋理 3D 並排顯示資源 (統一方塊)

下列程式碼會設定統一 Box 並排資源 (記下 語句 trSize.bUseBox = true;) :

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 0;
trCoord.Y = 1;
trCoord.Z = 0;
trCoord.Subresource = 0;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;

統一方塊

D3D11.3 並排顯示的資源 API

相同的 API 呼叫同時用於 2D 和 3D 並排顯示的資源:

列舉

結構

方法

Direct3D 11.3 功能