ID3D11DeviceContext1::UpdateSubresource1 方法 (d3d11_1.h)

CPU 會將數據從記憶體複製到在不可對應記憶體中建立的子資源。

語法

void UpdateSubresource1(
  [in]           ID3D11Resource  *pDstResource,
  [in]           UINT            DstSubresource,
  [in, optional] const D3D11_BOX *pDstBox,
  [in]           const void      *pSrcData,
  [in]           UINT            SrcRowPitch,
  [in]           UINT            SrcDepthPitch,
  [in]           UINT            CopyFlags
);

參數

[in] pDstResource

類型: ID3D11Resource*

目的地資源的指標。

[in] DstSubresource

類型: UINT

以零起始的索引,可識別目的地子資源。 如需詳細資訊,請參閱 D3D11CalcSubresource

[in, optional] pDstBox

類型: const D3D11_BOX*

方塊的指標,定義要複製資源數據的目標子資源部分。 座標是緩衝區的位元組,而紋理的材質則以位元組為單位。 如果 NULL,UpdateSubresource1 會將數據寫入目的地子資源,且沒有位移。 來源的維度必須符合目的地。

空方塊會產生無作業。 如果頂端值大於或等於底部值,或左值大於或等於右值,或前端值大於或等於後端值,則方塊是空的。 當方塊是空的時, UpdateSubresource1 不會執行更新作業。

[in] pSrcData

類型: const void*

記憶體中源數據的指標。

[in] SrcRowPitch

類型: UINT

源數據之一列的大小。

[in] SrcDepthPitch

類型: UINT

源數據之一深度配量的大小。

[in] CopyFlags

類型: UINT

指定如何執行更新作業 的D3D11_COPY_FLAGS型別值。 如果您針對沒有更新選項指定零, UpdateSubresource1 的行為會像 ID3D11DeviceContext::UpdateSubresource 一樣。 對於無法處理這些旗標的現有顯示驅動程式,運行時間不會使用這些驅動程式。

傳回值

備註

如果您呼叫 UpdateSubresource1 來更新常數緩衝區、傳遞任何區域,而且驅動程式尚未實作至 Windows 8,則運行時間會卸除功能層級 9.1、9.2 和 9.3 的呼叫 () 。 如果您以部分區域更新常數緩衝區,其範圍未對齊 16 位元組的數據粒度, (16 個字節成為完整常數) ,運行時間也會卸除呼叫。 當運行時間卸除呼叫時,運行時間不會呼叫對應的設備驅動器介面, (DDI) 。

當您在軟體命令清單中以位移 pDstBox 記錄 UpdateSubresource 的呼叫時,當您播放命令清單時,pDstBox 中的位移不正確地套用至 pSrcData。 new-for-Windows 8 UpdateSubresource1 修正此問題。 在 UpdateSubresource1 的呼叫中, pDstBox 不會影響 pSrcData

如需各種資源類型及 UpdateSubresource1 如何搭配每個資源類型使用的資訊,請參閱 Direct3D 11 中的資源簡介

注意僅適用於功能層級9_x硬體 如果您使用 UpdateSubresource1ID3D11DeviceContext1::CopySubresourceRegion1 從預備資源複製到預設資源,您可以損毀目的地內容。 如果您傳遞 NULL 來源方塊,而且來源資源與目的地資源的維度不同,或者如果您使用目的地位移、 (x、y 和 z) ,就會發生這種情況。 在此情況下,請一律傳遞來源方塊,這是來源資源的完整大小。
 

規格需求

需求
最低支援的用戶端 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 適用於 Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d3d11_1.h
程式庫 D3D11.lib

另請參閱

ID3D11DeviceContext1