PFND3D10DDI_RESOURCECOPY回呼函式 (d3d10umddi.h)

ResourceCopy 函式會將整個來源資源複製到目的地資源。

語法

PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;

void Pfnd3d10ddiResourcecopy(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  D3D10DDI_HRESOURCE unnamedParam3
)
{...}

參數

unnamedParam1

hDevice [in]

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

unnamedParam2

hDstResource [in]

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

unnamedParam3

hSrcResource [in]

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

傳回值

備註

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

Microsoft Direct3D 運行時間會呼叫使用者模式顯示驅動程式的 ResourceCopy 函式,通知驅動程式從指定的來源資源複製到指定的目的地資源。 來源和目的地資源不能是相同的資源。 來源和目的地資源都必須是相同類型的資源,而且具有相同維度。 這兩個資源) (DXGI_FORMAT 型別值的格式類型必須彼此轉換。 來源和目的地資源目前不得對應。 此外,資源建立旗標會限制資源是否可以參與複製作業。

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

注意 下列各節僅適用於 Microsoft Direct3D 10.1 版和更新版本 (,也就是 Windows Vista service Pack 1 (SP1) 及更新版本,以及 Windows Server 2008 和更新版本) 。
 
驅動程式可以實作 ResourceCopy 函式 ,其中包含可處理複製和轉換的 switch 語句。 也就是說,驅動程式可以實作一個 ResourceCopy,並可設定 D3D10_1DDI_DEVICEFUNCS 結構的 pfnResourceConvert 成員,以指向 ResourceCopy 以及 D3D10_1DDI_DEVICEFUNCS 的 pfnResourceCopy 成員。 不過,為了改善效能,驅動程式可以實作個別 的 ResourceCopyResourceConvert 函式。

針對呼叫驅動程式的 CreateResource (D3D10 ) 函式,Direct3D 10.0 版的 ResourceDimensionD3D10DDIARG_CREATERESOURCE 成員,Resource3D 10.1 版 ResourceCopy 具有與 Direct3D 10.0 版本的主要功能差異。 針對 ResourceCopy 的 Direct3D 10.0 版本,來源和目的地資源的 D3D10DDIARG_CREATERESOURCE ResourceDimension 成員必須相符。 ResourceCopy 的 Direct3D 10.1 版本允許來源和目的地資源的 ResourceDimension 成員稍微寬鬆D3D10DDIARG_CREATERESOURCE。 Direct3D 10.1 版 的 ResourceCopy 允許在 TexCube 目的地資源上複製 Tex2D 來源資源,或在 Tex2D 目的地資源上複製 TexCube 來源資源。 此外,資源層級的 TexCube 差異在 Direct3D 10.1 版中已消失。 Direct3D 10.1 版 的 ResourceCopy 只代表是否可以複製 TexCube。 在 Direct3D 10.0 版中,複製資源、驗證多個轉譯目標,依此類 (,也就是需要資源類型相同的各種作業) 全部都包含 TexCube 以納入資源類型的區別。 在 Direct3D 10.1 版中,運行時間只能判斷 Tex2D。

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

複製

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

  • 目的地資源不是使用在 D3D10DDIARG_CREATERESOURCE 結構的 Usage 成員中設定的D3D10_DDI_USAGE_IMMUTABLE值所建立。
  • 來源和目的地資源是使用相同的資源類型和維度建立, (緩衝區、一維 (1D) 紋理,依此類) ,方法是在 D3D10DDIARG_CREATERESOURCE 的 ResourceDimension 成員中設定相同的值。
  • 來源和目的地資源不是完全相同資源的一部分。
  • D3D10DDIARG_CREATERESOURCE的 Format 成員中指定的每個來源和目的地資源格式都位於相同的無類型群組中。
  • 來源和目的地資源必須具有相同數目的樣本和質量等級;除了單一取樣的資源之外,這些資源只能有相同的樣本數目。
ResourceCopy 不會確保目前未對應任何子資源。

轉換

為了轉換, ResourceCopy 可確保來源和目的地資源是透過驅動程式的 CreateResource (D3D10) 函式建立,並符合下列條件:

  • 目的地資源不是使用在 D3D10DDIARG_CREATERESOURCE 結構的 Usage 成員中設定的D3D10_DDI_USAGE_IMMUTABLE值所建立。
  • 來源和目的地資源是以相同的資源類型建立 (緩衝區、一維 (1D) 紋理,依此類) ,方法是在 D3D10DDIARG_CREATERESOURCE 的 ResourceDimension 成員中設定相同的值。
  • 來源和目的地資源的維度符合轉換。
  • 來源和目的地資源不是完全相同資源的一部分。
  • 在 D3D10DDIARG_CREATERESOURCE的 Format 成員中指定的每個來源和目的地資源格式都支援適當的轉換作業。 針對已壓縮的Mipped區塊壓縮資源,維度全都會驗證為兩個的乘冪。
  • 來源和目的地資源必須具有相同數目的樣本和質量等級;除了單一取樣的資源之外,這些資源只能有相同的樣本數目。
ResourceCopy 不會確保目前未對應任何子資源。

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 d3d10umddi.h (include D3d10umddi.h)

另請參閱

CreateResource (D3D10)

D3D10DDIARG_CREATERESOURCE

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

pfnSetErrorCb