PFND3D10DDI_RESOURCECOPYREGION回呼函式 (d3d10umddi.h)
ResourceCopyRegion 函式會將來源子資源區域複製到目的地子資源上的位置。
語法
PFND3D10DDI_RESOURCECOPYREGION Pfnd3d10ddiResourcecopyregion;
void Pfnd3d10ddiResourcecopyregion(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
UINT unnamedParam3,
UINT unnamedParam4,
UINT unnamedParam5,
UINT unnamedParam6,
D3D10DDI_HRESOURCE unnamedParam7,
UINT unnamedParam8,
const D3D10_DDI_BOX *unnamedParam9
)
{...}
參數
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 結構的指標,指定符合來源或目的地子資源的方塊。 如果 pSrcBox 為 NULL,驅動程式應該將整個來源子物件複製到目的地。
如果 D3D10_DDI_BOX 結構的成員是 left>=right、 top>=bottom 或 front>=back,則 pSrcBox 會被視為空白, 且 ResourceCopyRegion 不得執行任何複製作業。
傳回值
無
備註
驅動程式可以使用 pfnSetErrorCb 回呼函式來設定錯誤碼。
Microsoft Direct3D 運行時間會呼叫使用者模式顯示驅動程式的 ResourceCopyRegion 函式,通知驅動程式從指定的來源子資源區域複製到指定目的地子資源上的位置。 來源和目的地子資源不能是相同資源的相同子資源。 來源和目的地資源都必須是相同類型的資源,而且必須有格式類型 (DXGI_FORMAT 型別值,) 彼此轉換。
對於緩衝區,所有座標都必須以位元組為單位;而對於紋理,所有座標都必須以像素為單位。 pSrcBox 參數指向的方塊不得延伸至來源子資源區域或目的地子資源的邊緣。 來源和目的地資源目前不得對應。 此外,資源建立旗標會限制資源是否可以參與複製作業。
除了D3DDDIERR_DEVICEREMOVED之外,驅動程式不應該發生任何錯誤。 因此,如果驅動程式通過任何錯誤,但除了D3DDDIERR_DEVICEREMOVED之外,在 pfnSetErrorCb 函式的呼叫中,Direct3D 運行時間會判斷錯誤很重要。 即使裝置已移除,驅動程式也不需要傳回D3DDDIERR_DEVICEREMOVED;不過,如果裝置移除干擾 了 ResourceCopyRegion (作業,通常不應該) 發生,驅動程式就可以傳回D3DDDIERR_DEVICEREMOVED。
針對呼叫驅動程式的 CreateResource (D3D10 ) 函式,Direct3D 10.0 版本與 Direct3D 10.0 版本有關之來源和目的地資源的 ResourceDimensionD3D10DDIARG_CREATERESOURCE 成員,Direct3D 10.1 版的 Resource3D 10.1 版本具有主要功能差異。 針對 ResourceCopyRegion 的 Direct3D 10.0 版本,來源和目的地資源的 D3D10DDIARG_CREATERESOURCE ResourceDimension 成員必須相符。 Direct3D 10.1 版 的 ResourceCopyRegion 允許來源和目的地資源的 ResourceDimension 成員稍微寬鬆D3D10DDIARG_CREATERESOURCE。 Direct3D 10.1 版 的 ResourceCopyRegion 允許在 TexCube 目的地資源上複製 Tex2D 來源資源,或在 Tex2D 目的地資源上複製 TexCube 來源資源。 此外,資源層級的 TexCube 差異在 Direct3D 10.1 版中已消失。 Direct3D 10.1 版 的 ResourceCopyRegion 只代表是否可以複製 TexCube。 在 Direct3D 10.0 版中,複製資源、驗證多個轉譯目標,依此類 (,也就是需要資源類型相同的各種作業) 全部都包含 TexCube 以納入資源類型的區別。 在 Direct3D 10.1 版中,運行時間只能判斷 Tex2D。
下列各節列出複製和轉換的條件:
複製
若要複製, ResourceCopyRegion 可確保來源和目的地資源是透過驅動程式的 CreateResource (D3D10) 函式建立,並符合下列條件:
- 目的地資源不是使用在 D3D10DDIARG_CREATERESOURCE 結構的 Usage 成員中設定的D3D10_DDI_USAGE_IMMUTABLE值所建立。
- 如果來源或目的地資源在 D3D10DDIARG_CREATERESOURCE 的 BindFlags 成員中設定D3D10_DDI_BIND_DEPTH_STENCIL位,或是多重取樣的資源,ResourceCopyRegion 會驗證 pSrcBox 參數為 NULL,而 DstX、DstY 和 DstZ 參數為 0。
- 子資源索引位於範圍內。
- 對齊限制適用於座標。
- 來源和目的地資源不屬於完全相同的子資源。
- D3D10DDIARG_CREATERESOURCE的 Format 成員中指定的每個來源和目的地資源格式都位於相同的無類型群組中。
- 來源和目的地資源必須具有相同數目的樣本和質量等級;除了單一取樣的資源之外,這些資源只能有相同的樣本數目。
轉換
為了轉換, ResourceCopyRegion 可確保來源和目的地資源是透過驅動程式的 CreateResource (D3D10) 函式建立,並符合下列條件:
- 目的地資源不是使用在 D3D10DDIARG_CREATERESOURCE 結構的 Usage 成員中設定的D3D10_DDI_USAGE_IMMUTABLE值所建立。
- 如果來源或目的地資源在 D3D10DDIARG_CREATERESOURCE 的 BindFlags 成員中設定D3D10_DDI_BIND_DEPTH_STENCIL位,或是多重取樣的資源,ResourceCopyRegion 會驗證 pSrcBox 參數為 NULL,而 DstX、DstY 和 DstZ 參數為 0。
- 子資源索引位於範圍內。
- 對齊限制適用於座標。
- 來源和目的地資源不屬於完全相同的子資源。
- D3D10DDIARG_CREATERESOURCE的 Format 成員中指定的每個來源和目的地資源格式都位於相同的無類型群組中。
- 在 D3D10DDIARG_CREATERESOURCE的 Format 成員中指定的每個來源和目的地資源格式都支援適當的轉換作業。
- 來源和目的地資源必須具有相同數目的樣本和質量等級;除了單一取樣的資源之外,這些資源只能有相同的樣本數目。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
目標平台 | 桌面 |
標頭 | d3d10umddi.h (include D3d10umddi.h) |