IDirect3DDevice9::StretchRect 方法 (d3d9helper.h)
將來源矩形的內容複寫到目的地矩形。 來源矩形可由複本延展和篩選。 此函式通常用於變更視訊串流的外觀比例。
語法
HRESULT StretchRect(
[in] IDirect3DSurface9 *pSourceSurface,
[in] const RECT *pSourceRect,
[in] IDirect3DSurface9 *pDestSurface,
[in] const RECT *pDestRect,
[in] D3DTEXTUREFILTERTYPE Filter
);
參數
[in] pSourceSurface
類型: IDirect3DSurface9*
來源介面的指標。 請參閱 IDirect3DSurface9。
[in] pSourceRect
類型:const RECT*
來源矩形的指標。 此參數的 Null 會導致使用整個來源介面。
[in] pDestSurface
類型: IDirect3DSurface9*
目的地介面的指標。 請參閱 IDirect3DSurface9。
[in] pDestRect
類型:const RECT*
目的地矩形的指標。 此參數的 Null 會導致使用整個目的地介面。
[in] Filter
篩選類型。 允許的值是D3DTEXF_NONE、D3DTEXF_POINT或D3DTEXF_LINEAR。 如需詳細資訊,請參閱 D3DTEXTUREFILTERTYPE。
傳回值
類型: HRESULT
如果方法成功,傳回值會D3D_OK。 如果方法失敗,則傳回值可以是:D3DERR_INVALIDCALL。
備註
StretchRect 限制
- 驅動程式支援會有所不同。 請參閱下列驅動程式支援 (一節) ,以查看哪些驅動程式支援哪些來源和目的地格式。
- 來源和目的地介面必須在預設記憶體集區中建立。
- 如果指定篩選,您必須設定適當的篩選上限, (請參閱 D3DCAPS9 中的 StretchRectFilterCaps) 。
- 相同表面上的來源和目的地矩形之間不支援延展。
- 如果目的地介面是螢幕外純螢幕,但來源不是,則不支援延展。
- 如果任一表面採用壓縮格式,則您許多不會在來源和目的地矩形之間延展 (請參閱 使用壓縮紋理 (Direct3D 9) ) 。
- 延展僅支援從 YUV 轉換為高精確度 RGBA 的色彩空間轉換。 由於軟體模擬不支援色彩轉換支援,請使用 IDirect3D9::CheckDeviceFormatConversion 來測試硬體是否有色彩轉換支援。
- 如果來源或目的地介面是紋理表面 (或 Cube 紋理表面) ,您必須使用支援D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES (的 Direct3D 9 驅動程式,請參閱 D3DDEVCAPS2) 。
- 來源和目的地介面必須是純深度樣板表面, (不是紋理,) (請參閱 IDirect3DDevice9::CreateDepthStencilSurface) 。
- 兩個表面都無法捨棄。
- 必須複製整個表面 (,也就是:不允許) 子矩形複本。
- 不支援格式轉換、延展和壓縮。
- StretchRect 無法在 BeginScene/EndScene 配對內呼叫。
您可以使用 StretchRect 從一個轉譯目標複製到另一個轉譯目標。 如果來源轉譯目標為多重取樣,這會導致來源轉譯目標降級。 例如,您可以:
- 建立多重取樣的轉譯目標。
- 建立大小相同的第二個轉譯目標,而不是多重取樣。
- 使用 StretchRect 將多取樣轉譯目標複製到第二個轉譯目標,以複製 (。
驅動程式支援
對於 StretchRect 而言,表面組合有許多限制。 因素包括驅動程式是否為 Direct3D 9 驅動程式或較舊驅動程式,以及作業是否會導致延展/壓縮。 由於應用程式預期無法辨識驅動程式是否為 Direct3D 9 驅動程式,因此執行時間會自動設定新的上限,D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES上限 (請參閱 Direct3D 9 層級驅動程式和更新版本 D3DDEVCAPS2) 。
DirectX 8 驅動程式 (沒有延展) | |||||
---|---|---|---|---|---|
Dest 格式 | |||||
紋理 | RT 紋理 | Rt | 螢幕外純文字 | ||
Src 格式 | 紋理 | 否 | 否 | 否 | 否 |
RT 紋理 | 否 | 是 | 是 | 否 | |
Rt | 否 | 是 | 是 | 否 | |
螢幕外純文字 | 是 | 是 | 是 | 是 |
DirectX 8 驅動程式 (延展) | |||||
---|---|---|---|---|---|
Dest 格式 | |||||
紋理 | RT 紋理 | Rt | 螢幕外純文字 | ||
Src 格式 | 紋理 | 否 | 否 | 否 | 否 |
RT 紋理 | 否 | 否 | 否 | 否 | |
Rt | 否 | 是 | 是 | 否 | |
螢幕外純文字 | 否 | 是 | 是 | 否 |
Direct3D 9 驅動程式 (沒有延展) | |||||
---|---|---|---|---|---|
Dest 格式 | |||||
紋理 | RT 紋理 | Rt | 螢幕外純文字 | ||
Src 格式 | 紋理 | 否 | 是 | 是 | 否 |
RT 紋理 | 否 | 是 | 是 | 否 | |
Rt | 否 | 是 | 是 | 否 | |
螢幕外純文字 | 否 | 是 | 是 | 是 |
Direct3D 9 驅動程式 (延展) | |||||
---|---|---|---|---|---|
Dest 格式 | |||||
紋理 | RT 紋理 | Rt | 螢幕外純文字 | ||
Src 格式 | 紋理 | 否 | 是 | 是 | 否 |
RT 紋理 | 否 | 是 | 是 | 否 | |
Rt | 否 | 是 | 是 | 否 | |
螢幕外純文字 | 否 | 是 | 是 | 否 |
需求
目標平台 | Windows |
標頭 | d3d9helper.h (包含 D3D9.h) |
程式庫 | D3D9.lib |