Share via


PFND3D11_1DDI_RESOURCECOPYREGION回呼函式 (d3d10umddi.h)

將來源子資源區域複製到目的地子資源上的位置。

語法

PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;

void Pfnd3d111DdiResourcecopyregion(
       D3D10DDI_HDEVICE unnamedParam1,
       D3D10DDI_HRESOURCE unnamedParam2,
       UINT unnamedParam3,
       UINT unnamedParam4,
       UINT unnamedParam5,
       UINT unnamedParam6,
       D3D10DDI_HRESOURCE unnamedParam7,
       UINT unnamedParam8,
       const D3D10_DDI_BOX *unnamedParam9,
  [in] UINT CopyFlags
)
{...}

參數

unnamedParam1

hDevice [in]

顯示裝置的句柄 (圖形內容) 。

unnamedParam2

hDstResource [in]

要複製到之目的地資源的句柄。

unnamedParam3

DstSubresource [in]

索引,指出要複製的目標子資源。

unnamedParam4

DstX [in]

目的地子資源的 X 座標。

unnamedParam5

DstY [in]

目的地子資源的 Y 座標。 針對 1D (1D) 子資源, DstY 會設定為零。

unnamedParam6

DstZ [in]

目的地子資源的 Z 座標。 針對 1D (1D) 和二維 (2D) 子資源, DstZ 會設定為零。

unnamedParam7

hSrcResource [in]

要從中複製的來源資源句柄。

unnamedParam8

SrcSubresource [in]

索引,指出要從中複製的來源子資源。

unnamedParam9

pSrcBox [in, optional]

D3D10_DDI_BOX 結構的指標,指定符合來源或目的地子資源的方塊。 如果 pSrcBoxNULL,驅動程式應該將整個來源子物件複製到目的地。

如果 D3D10_DDI_BOX 結構的成員是 left>=righttop>=bottomfront>=back則 pSrcBox 會被視為空白, 且 ResourceCopyRegion (D3D11_1) 不得執行任何複製作業。

[in] CopyFlags

值,指定複製作業的特性,做為D3D11_1_DDI_COPY_FLAGS列舉型別中值的位 OR

傳回值

備註

驅動程式可以使用 pfnSetErrorCb 回呼函式來設定錯誤碼。

Microsoft Direct3D 運行時間會呼叫使用者模式顯示驅動程式的 ResourceCopyRegion (D3D11_1) 函式,通知驅動程式從指定的來源子資源區域複製到指定目的地子資源上的位置。 來源和目的地子資源可以是相同資源的相同子資源。 來源和目的地資源都必須是相同類型的資源,而且必須有格式類型 (DXGI_FORMAT 型別值,) 彼此轉換。

對於緩衝區,所有座標都必須以位元組為單位;而對於紋理,所有座標都必須以像素為單位。 pSrcBox 參數指向的方塊不得延伸至來源子資源區域或目的地子資源的邊緣。 來源和目的地資源目前不得對應。 此外,資源建立旗標會限制資源是否可以參與複製作業。

除了D3DDDIERR_DEVICEREMOVED之外,驅動程式不應該發生任何錯誤。 因此,如果驅動程式通過任何錯誤,但除了D3DDDIERR_DEVICEREMOVED之外,在 pfnSetErrorCb 函式的呼叫中,Direct3D 運行時間會判斷錯誤很重要。 即使裝置已移除,驅動程式也不需要傳回D3DDDIERR_DEVICEREMOVED;不過,如果裝置移除干擾通常不應該發生) 的 (作業,則驅動程式可以傳回D3DDDIERR_DEVICEREMOVED。

驅動程式可以實作 ResourceCopyRegion (D3D11_1) 函式,其中包含可處理複製和轉換 的 switch 語句。 也就是說,驅動程式可以實作一個 ResourceCopyRegion (D3D11_1) ,而且可以將 D3D11_1DDI_DEVICEFUNCS 結構的 pfnResourceConvertRegion 成員設定為指向 ResourceCopyRegion (D3D11_1) 以及 D3D11_1DDI_DEVICEFUNCSpfnResourceCopyRegion 成員。 不過,為了改善效能,驅動程式可以實作個別 的 ResourceCopyRegion (D3D11_1) ResourceConvertRegion (D3D11_1) 函式。

下列各節列出複製和轉換的條件:

複製

若要複製, ResourceCopyRegion (D3D11_1) 可確保來源和目的地資源是透過驅動程式的 CreateResource (D3D11) 函式建立,並符合下列條件:

  • 目的地資源不是使用在 D3D11DDIARG_CREATERESOURCE 結構的 Usage 成員中設定的D3D10_DDI_USAGE_IMMUTABLE值所建立。
  • 如果來源或目的地資源在D3D10DDIARG_CREATERESOURCE的 BindFlags 成員中設定D3D10_DDI_BIND_DEPTH_STENCIL位,或是多重取樣的資源, ResourceCopyRegion (D3D11_1) 會驗證 pSrcBox 參數為 NULL,而 DstXDstYDstZ 參數為 0。
  • 子資源索引位於範圍內。
  • 對齊限制適用於座標。
  • 來源和目的地資源不屬於完全相同的子資源。
  • D3D11DDIARG_CREATERESOURCEFormat 成員中指定的每個來源和目的地資源格式都位於相同的無類型群組中。
  • 來源和目的地資源必須具有相同數目的樣本和質量等級;除了單一取樣的資源之外,這些資源只能有相同的樣本數目。
ResourceCopyRegion (D3D11_1) 不會確保目的地位移所位移的來源方塊完全符合資源。 ResourceCopyRegion (D3D11_1) 也不會確保目前未對應任何子資源。

轉換

為了轉換, ResourceCopyRegion (D3D11_1) 可確保來源和目的地資源是透過驅動程式的 CreateResource (D3D11) 函式建立,並具有下列條件:

  • 目的地資源不是使用在 D3D11DDIARG_CREATERESOURCE 結構的 Usage 成員中設定的D3D10_DDI_USAGE_IMMUTABLE值所建立。
  • 如果來源或目的地資源在 D3D11DDIARG_CREATERESOURCE 的BindFlags 成員中設定D3D10_DDI_BIND_DEPTH_STENCIL位,或是多重取樣的資源,ResourceCopyRegion (D3D11_1) 會驗證 pSrcBox 參數為 NULL,而 DstXDstYDstZ 參數為 0。
  • 子資源索引位於範圍內。
  • 對齊限制適用於座標。
  • 來源和目的地資源不屬於完全相同的子資源。
  • D3D11DDIARG_CREATERESOURCEFormat 成員中指定的每個來源和目的地資源格式都位於相同的無類型群組中。
  • 在 D3D11DDIARG_CREATERESOURCEFormat 成員中指定的每個來源和目的地資源格式都支援適當的轉換作業。
  • 來源和目的地資源必須具有相同數目的樣本和質量等級;除了單一取樣的資源之外,這些資源只能有相同的樣本數目。
ResourceCopyRegion (D3D11_1) 不會確保目前未對應任何子資源。 ResourceCopyRegion (D3D11_1) 也不會確保目的地位移所位移的來源方塊完全符合資源。

規格需求

需求
最低支援的用戶端 Windows 8
最低支援的伺服器 Windows Server 2012
目標平台 桌面
標頭 d3d10umddi.h (include D3d10umddi.h)

另請參閱

CreateResource (D3D11)

D3D10_DDI_BOX

D3D11DDIARG_CREATERESOURCE

D3D11_1DDI_DEVICEFUNCS

D3D11_1_DDI_COPY_FLAGS

pfnSetErrorCb