跳轉到主要內容
將圖格從緩衝區複製到並排資源,或反向複製。

語法

參數

pTiledResource [in]
類型:ID3D12Resource *
並排資源的指標。 pTileRegionStartCoordinate [in]
類型:const D3D12_TILED_RESOURCE_COORDINATE *
D3D12_TILED_RESOURCE_COORDINATE 結構的指標,描述並排資源的起始座標。 pTileRegionSize [in]
類型:const D3D12_TILE_REGION_SIZE *
D3D12_TILE_REGION_SIZE 結構的指標,描述並排區域的大小。 pBuffer [in]
類型:ID3D12Resource *
ID3D12Resource 的指標,代表預設、動態或暫存緩衝區。 BufferStartOffsetInBytes
類型:UINT64
pBuffer 處緩衝區中開始作業的位移 (以位元組為單位)。 Flags
類型:D3D12_TILE_COPY_FLAGS
D3D12_TILE_COPY_FLAGS 類型值的組合,以位元 OR 運算結合,用來識別如何複製圖格。

傳回值

類型:void 無。

備註

CopyTiles 會捨棄對未對應區域的寫入作業, 並處理從未對應區域的讀取作業 (Tier_1 並排資源除外, 在其上讀取和寫入未對應區域是無效的,請參閱 D3D12_TILED_RESOURCES_TIER)。 如果因為目的地資源中的多個位置對應到相同的圖格記憶體, 而導致複製作業多次寫入相同的記憶體位置,則對多重對應圖格產生的寫入作業 是非決定性且無法重複的;也就是說,對圖格記憶體的存取會依照硬體 執行複製作業時的任意順序進行。 複製作業所涉及的圖格不能包含含有已封裝 Mipmap 的圖格,否則複製 作業的結果會是未定義的。若要在硬體封裝至構成已封裝 Mip 之一或多個圖格的 Mipmap 之間傳輸資料,您必須 使用標準 (也就是非圖格專用) 的複製 API, 例如 CopyTextureRegion。 CopyTiles 複製資料的模式與標準複製方法略有不同。 在複製作業的非並排緩衝區資源端,圖格的記憶體配置在 64 KB 圖格內是線性的,硬體和驅動程式在與並排資源之間傳輸時,會視需要針對每個圖格進行重排 (swizzle) 和反重排 (de-swizzle)。對於多重取樣消除鋸齒 (MSAA) 表面,硬體和驅動程式會先依照取樣索引順序周遊每個像素的取樣,再移至下一個像素。對於右側部分填滿的圖格 (適用於寬度不是圖格像素寬度倍數的表面),向下移動一列的間距和步幅,是圖格填滿時可橫跨圖格之像素數目的完整位元組大小。因此,記憶體中每一列像素之間可能會有間隙。小於一個圖格的 Mipmap 在線性配置中不會封裝在一起,這看似浪費記憶體空間,但如前所述,您無法使用 CopyTiles 複製到硬體封裝在一起的 Mipmap。您可以直接使用一般的複製 API (例如 CopyTextureRegion) 個別複製小型 Mipmap。

需求

標頭: d3d12_xs.h 或 d3d12_x.h
程式庫: d3d12_xs.lib 或 d3d12_x.lib
支援的平台: XBOX Series 主機與 XBOX One 系列

另請參閱

ID3D12GraphicsCommandList 並排資源
最後修改於 2026年10月6日