Metodo IDirect3DDevice9::StretchRect (d3d9helper.h)
Copiare il contenuto del rettangolo di origine nel rettangolo di destinazione. Il rettangolo di origine può essere esteso e filtrato in base alla copia. Questa funzione viene spesso usata per modificare le proporzioni di un flusso video.
Sintassi
HRESULT StretchRect(
[in] IDirect3DSurface9 *pSourceSurface,
[in] const RECT *pSourceRect,
[in] IDirect3DSurface9 *pDestSurface,
[in] const RECT *pDestRect,
[in] D3DTEXTUREFILTERTYPE Filter
);
Parametri
[in] pSourceSurface
Tipo: IDirect3DSurface9*
Puntatore alla superficie di origine. Vedi IDirect3DSurface9.
[in] pSourceRect
Tipo: const RECT*
Puntatore al rettangolo di origine. Un valore NULL per questo parametro determina l'utilizzo dell'intera superficie di origine.
[in] pDestSurface
Tipo: IDirect3DSurface9*
Puntatore alla superficie di destinazione. Vedi IDirect3DSurface9.
[in] pDestRect
Tipo: const RECT*
Puntatore al rettangolo di destinazione. Un valore NULL per questo parametro determina l'utilizzo dell'intera superficie di destinazione.
[in] Filter
Tipo: D3DTEXTUREFILTERTYPE
Tipo di filtro. I valori consentiti sono D3DTEXF_NONE, D3DTEXF_POINT o D3DTEXF_LINEAR. Per altre informazioni, vedere D3DTEXTUREFILTERTYPE.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, il valore restituito viene D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere: D3DERR_INVALIDCALL.
Commenti
Restrizioni di StretchRect
- Il supporto dei driver varia. Vedere la sezione sul supporto dei driver (di seguito) per vedere quali driver supportano i formati di origine e di destinazione.
- Le superfici di origine e di destinazione devono essere create nel pool di memoria predefinito.
- Se viene specificato il filtro, è necessario impostare i limiti di filtro appropriati (vedere StretchRectFilterCaps in D3DCAPS9).
- L'estensione non è supportata tra rettangoli di origine e di destinazione sulla stessa superficie.
- L'estensione non è supportata se la superficie di destinazione è una superficie normale fuori schermo, ma l'origine non è.
- Molti non si estendono tra rettangoli di origine e di destinazione se una delle due superfici è in un formato compresso (vedere Uso di trame compresse (Direct3D 9)).
- L'estensione supporta la conversione dello spazio dei colori solo da YUV a RGBA ad alta precisione. Poiché il supporto per la conversione dei colori non è supportato dall'emulazione software, usare IDirect3D9::CheckDeviceFormatConversion per testare l'hardware per il supporto per la conversione dei colori.
- Se la superficie di origine o di destinazione è una superficie di trama (o una superficie di trama del cubo), è necessario usare un driver Direct3D 9 che supporta D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES (vedere D3DDEVCAPS2).
- Le superfici di origine e di destinazione devono essere superfici stencil di profondità normale (non trame) (vedere IDirect3DDevice9::CreateDepthStencilSurface).
- Nessuna delle superfici può essere scartata.
- L'intera superficie deve essere copiata ( ovvero le copie sotto rettangolo non sono consentite).
- La conversione del formato, l'estensione e la compattazione non sono supportate.
- StretchRect non può essere chiamato all'interno di una coppia BeginScene/EndScene.
È possibile usare StretchRect per copiare da un oggetto rendertarget a un altro. Se il rendering di origine è multicampionato, verrà eseguito il downcampionamento del rendering di origine. Ad esempio, è possibile:
- Creare un oggetto rendertarget multicampionato.
- Creare un secondo rendering della stessa dimensione, che non è multicampionato.
- Copiare (usando StretchRect il rendering multisample rendertarget nel secondo rendertarget.
Supporto driver
Esistono molte restrizioni relative alle combinazioni di superficie valide per StretchRect. I fattori includono se il driver è un driver Direct3D 9 o versione precedente e se l'operazione comporterà l'estensione/compattazione. Poiché le applicazioni non devono riconoscere se il driver è un driver Direct3D 9 o meno, il runtime imposterà automaticamente un nuovo limite, D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES limite (vedere D3DDEVCAPS2), per driver a 9 livelli Direct3D e versioni successive.
Driver DirectX 8 (nessuna estensione) | |||||
---|---|---|---|---|---|
Formati dest | |||||
Trama | Trama RT | RT | Fuori schermo normale | ||
Formati Src | Trama | No | No | No | No |
Trama RT | No | Sì | Sì | No | |
RT | No | Sì | Sì | No | |
Fuori schermo normale | Sì | Sì | Sì | Sì |
Driver DirectX 8 (estensione) | |||||
---|---|---|---|---|---|
Formati dest | |||||
Trama | Trama RT | RT | Fuori schermo normale | ||
Formati Src | Trama | No | No | No | No |
Trama RT | No | No | No | No | |
RT | No | Sì | Sì | No | |
Schermata normale | No | Sì | Sì | No |
Driver Direct3D 9 (nessuna estensione) | |||||
---|---|---|---|---|---|
Formati più dest | |||||
Trama | Trama RT | RT | Schermata normale | ||
Formati Src | Trama | No | Sì | Sì | No |
Trama RT | No | Sì | Sì | No | |
RT | No | Sì | Sì | No | |
Schermata normale | No | Sì | Sì | Sì |
Driver Direct3D 9 (estensione) | |||||
---|---|---|---|---|---|
Formati più dest | |||||
Trama | Trama RT | RT | Schermata normale | ||
Formati Src | Trama | No | Sì | Sì | No |
Trama RT | No | Sì | Sì | No | |
RT | No | Sì | Sì | No | |
Schermata normale | No | Sì | Sì | No |
Requisiti
Piattaforma di destinazione | Windows |
Intestazione | d3d9helper.h (include D3D9.h) |
Libreria | D3D9.lib |