ID3D10Device::CopySubresourceRegion 方法 (d3d10.h)
將區域從來源資源複製到目的地資源。
語法
void CopySubresourceRegion(
[in] ID3D10Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D10Resource *pSrcResource,
[in] UINT SrcSubresource,
[in] const D3D10_BOX *pSrcBox
);
參數
[in] pDstResource
類型: ID3D10Resource*
目的地資源的指標 (請參閱 ID3D10Resource) 。
[in] DstSubresource
類型: UINT
目的地的子資源索引。
[in] DstX
類型: UINT
目的地區域左上角的 x 座標。
[in] DstY
類型: UINT
目的地區域左上角的 Y 座標。
[in] DstZ
類型: UINT
目的地區域左上角的 z 座標。 對於 1D 或 2D 子資源,這必須是零。
[in] pSrcResource
類型: ID3D10Resource*
來源資源的指標 (請參閱 ID3D10Resource) 。
[in] SrcSubresource
類型: UINT
來源的子資源索引。
[in] pSrcBox
類型: const D3D10_BOX*
3D 方塊 (請參閱 D3D10_BOX) 定義可複製的來源子資源。 如果 為 NULL,則會複製整個來源子資源。 方塊必須符合來源資源。
空方塊會產生無作業。 如果頂端值大於或等於底部值,或左值大於或等於右值,或前端值大於或等於後端值,則方塊是空的。 當方塊是空的時, CopySubresourceRegion 不會執行複製作業。
傳回值
無
備註
來源方塊必須位於來源資源的大小內。 目的地位置是絕對值, (不是相對值) 。 目的地位置可以從來源位置位移;不過,要複製的區域大小 (包括目的地位置) 必須符合目的地資源。
如果資源是緩衝區,則所有座標都是以位元組為單位;如果資源是紋理,則所有座標都會以材質表示。
D3D10CalcSubresource 是用來計算子資源索引的協助程式函式。
CopySubresourceRegion 會在 GPU (上執行複製,類似於 CPU) 的 memcpy。 因此,來源和目的地資源必須符合下列準則:
- 雖然子資源可能來自相同的資源) ,但必須是不同的子資源 (。
- 必須是相同的 類型。
- 必須具有相容的 格式 , (格式必須相同,或來自相同類型群組) 。 例如,DXGI_FORMAT_R32G32B32_FLOAT紋理可以複製到DXGI_FORMAT_R32G32B32_UINT紋理,因為這些格式都位於DXGI_FORMAT_R32G32B32_TYPELESS群組中。 從 Direct3D 10.1 開始, CopySubresourceRegion 可以在幾個格式類型之間複製。 如需詳細資訊,請參閱 使用 Direct3D 10.1 格式化轉換。
- 目前可能未 對應。
如果您的應用程式需要複製整個資源,建議您改用 ID3D10Device::CopyResource 。
CopySubresourceRegion 是運行時間可以新增至命令緩衝區佇列的異步呼叫。 這個異步行為會嘗試移除複製數據時可能發生的管線停止。 如需詳細資訊,請參閱 效能考慮 。
Direct3D 10 與 Direct3D 10.1 之間的差異: Direct3D 10 有下列限制:
|
例子
下列代碼段會將 (位於 (120,100) , (200,220) ) 的方塊複製到目的地紋理 (130,120) , (210,240) 。
D3D10_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;
pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion );
請注意,針對 2D 紋理,正面和背面一律會分別設定為 0 和 1。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d10.h |
程式庫 | D3D10.lib |