共用方式為


ID3D12GraphicsCommandList::CopyTiles 方法 (d3d12.h)

將磚從緩衝區複製到磚資源,反之亦然。

語法

void CopyTiles(
  [in] ID3D12Resource                        *pTiledResource,
  [in] const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D12_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D12Resource                        *pBuffer,
       UINT64                                BufferStartOffsetInBytes,
       D3D12_TILE_COPY_FLAGS                 Flags
);

參數

[in] pTiledResource

類型: ID3D12Resource*

圖格資源的指標。

[in] pTileRegionStartCoordinate

類型: const D3D12_TILED_RESOURCE_COORDINATE*

描述磚資源起始座標之 D3D12_TILED_RESOURCE_COORDINATE 結構的指標。

[in] pTileRegionSize

類型: const D3D12_TILE_REGION_SIZE*

描述磚區域大小的 D3D12_TILE_REGION_SIZE 結構的指標。

[in] pBuffer

類型: ID3D12Resource*

ID3D12Resource 的指標,表示預設、動態或暫存緩衝區。

BufferStartOffsetInBytes

類型: UINT64

pBuffer 的緩衝區中,以位元組為單位的位移,以啟動作業。

Flags

類型: D3D12_TILE_COPY_FLAGS

使用位 OR 運算結合 的D3D12_TILE_COPY_FLAGS型別值組合,並識別如何複製磚。

傳回值

備註

CopyTiles 會將寫入作業卸除至未對應的區域,並處理未對應的區域讀取作業 (,但Tier_1磚資源除外,其中讀取和寫入未對應的區域無效 - 請參閱 D3D12_TILED_RESOURCES_TIER)

如果複製作業牽涉到寫入相同的記憶體位置多次,因為目的地資源中的多個位置會對應至相同的磚記憶體,則對多對應磚產生的寫入作業不具決定性且不可重複;也就是說,存取磚記憶體會依硬體執行複製作業的順序發生。

複製作業中涉及的圖格不能包含包含已封裝Mipmap或複製作業結果的磚未定義。 若要將數據傳輸到硬體套件到構成封裝Mips的一或多個磚,您必須使用標準 (,也就是非磚特定) 複製 API,例如 CopyTextureRegion

CopyTiles 會以與標準複製方法稍微不同的模式複製數據。

複製作業之非磚緩衝資源端的記憶體配置在64 KB圖格內的記憶體中是線性的,其中硬體和驅動程式會在每一磚上適當地傳輸至並排顯示資源時,依適當方式清除每個磚的記憶體配置。 針對多重取樣反鋸齒 (MSAA) 表面,硬體和驅動程式會在移至下一個圖元之前,以取樣索引順序周遊每個像素的樣本。 對於在右側部分填滿的磚 (,如果磚已滿,其寬度不是圖元寬度的倍數,) ,則向下移動數據列的間距和步調,是圖格已滿時會容納在磚上之圖元的完整大小。 因此,記憶體中每個像素數據列之間可能會有一個間距。 小於磚的 Mipmap 不會在線性配置中封裝在一起,這似乎浪費記憶體空間,但如前所述,您無法使用 CopyTiles 複製到硬體套件一起的 Mipmap。 您可以只使用一般複製 API,例如 CopyTextureRegion,個別複製小型 Mipmap。

規格需求

需求
目標平台 Windows
標頭 d3d12.h
程式庫 D3d12.lib
Dll D3d12.dll

另請參閱

ID3D12GraphicsCommandList

磚化資源