跳轉到主要內容
使用 CPU 將資料複製到子資源,讓 CPU 能夠修改大部分版面配置未定義之紋理的內容。

語法

參數

DstSubresource
類型:UINT
指定子資源的索引。 pDstBox [in, optional]
類型:const D3D12_BOX *
指向方塊的指標,該方塊定義要將資源資料複製到其中的目的地子資源部分。 如果為 NULL,則會將資料寫入目的地子資源,且不含位移。 來源的維度必須符合目的地 (請參閱 D3D12_BOX)。 空方塊會導致無作業。 如果 top 值大於或等於 bottom 值、left 值大於或等於 right 值, 或 front 值大於或等於 back 值,則方塊為空。 當方塊為空時,此方法不會執行任何作業。 pSrcData [in]
類型:const void *
指向記憶體中來源資料的指標。 SrcRowPitch
類型:UINT
從來源資料的某一列到下一列的距離。 SrcDepthPitch
類型:UINT
從來源資料的某一個深度切片到下一個深度切片的距離。

傳回值

類型:HRESULT 此方法會傳回其中一個 Direct3D 12 傳回碼。

備註

注意: XBOX Series 主機與 XBOX One 系列目前不支援此功能。
資源應先使用 Map 進行對應。紋理必須處於 D3D12_RESOURCE_STATE_COMMON 狀態,透過 WriteToSubresource 和 ReadFromSubresource 進行的 CPU 存取才合法;但緩衝區則不需要。 為了提高效率,請確保方塊內範圍的邊界和對齊在水平方向為 ( 64 / [每像素位元組數] ) 個像素。 垂直邊界和對齊應為 2 列,但使用每像素 1 位元組的格式時除外,此時建議使用 4 列。 每次呼叫處理單一深度切片可獲得有效率的處理。 建議 (但非必要) 提供 128 位元組對齊的指標和間距。 寫入子 mipmap 層級時,建議使用比上述更大的寬度和高度。 這是因為小型 mipmap 層級實際上可能儲存在較大的記憶體區塊中,且具有不透明的位移量,可能會干擾快取行對齊。 WriteToSubresource 和 ReadFromSubresource 可針對 UMA 介面卡進行近乎零複製的最佳化,但可能會嚴重損害獨立/NUMA 介面卡的效率,因為紋理資料無法常駐在本機視訊記憶體中。一般應用程式應使用適合獨立介面卡的上傳技術,除非應用程式能辨識出介面卡架構為 UMA。如需上傳的詳細資訊,請參閱 CopyTextureRegion;如需 UMA 的詳細資訊,請參閱 D3D12_FEATURE_DATA_ARCHITECTURE。 在 UMA 系統上,此常式可透過稱為 迴圈分塊 的迴圈最佳化,將記憶體複製的成本降至最低。將上傳分割成可輕鬆放入 CPU 快取的區塊,CPU 與主記憶體之間的有效頻寬就能更接近理論最大值。

需求

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

另請參閱

ID3D12Resource 子資源
最後修改於 2026年10月6日