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

類型: D3DTEXTUREFILTERTYPE

篩選類型。 允許的值是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 向下取樣 Multisample Rendertarget

您可以使用 StretchRect 從一個轉譯目標複製到另一個轉譯目標。 如果來源轉譯目標為多重取樣,這會導致來源轉譯目標降級。 例如,您可以:

  • 建立多重取樣的轉譯目標。
  • 建立大小相同的第二個轉譯目標,而不是多重取樣。
  • 使用 StretchRect 將多取樣轉譯目標複製到第二個轉譯目標,以複製 (。
請注意,使用 StretchRect 減少取樣 Multisample Rendertarget 時涉及的額外表面,將會導致效能達到。

驅動程式支援

對於 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

另請參閱

IDirect3DDevice9

IDirect3DDevice9::BeginScene

IDirect3DDevice9::EndScene