Metodo IDirectDrawSurface7::Flip (ddraw.h)

Rende la memoria di superficie associata alla superficie DDSCAPS_BACKBUFFER diventa associata alla superficie front-buffer.

Sintassi

HRESULT Flip(
  [in] LPDIRECTDRAWSURFACE7 unnamedParam1,
  [in] DWORD                unnamedParam2
);

Parametri

[in] unnamedParam1

Puntatore all'interfaccia IDirectDrawSurface7 per una superficie arbitraria nella catena di scorrimento. Il valore predefinito per questo parametro è NULL, nel qual caso DirectDraw esegue il ciclo tramite i buffer nell'ordine in cui vengono collegati tra loro. Se questo parametro non è NULL, DirectDraw si capovolge alla superficie specificata anziché alla superficie successiva nella catena di scorrimento. Flip ha esito negativo se la superficie specificata non è un membro della catena di capovolgimento.

[in] unnamedParam2

Combinazione di flag che specificano opzioni di capovolgimento. I flag seguenti sono definiti:

DDFLIP_DONOTWAIT

Nelle interfacce IDirectDrawSurface7 il valore predefinito è DDFLIP_WAIT. Se si vuole eseguire l'override del valore predefinito e usare il tempo in cui l'acceleratore è occupato (come indicato dal valore restituito DDERR_WASSTILLDRAWING), usare DDFLIP_DONOTWAIT.

DDFLIP_EVEN

Per l'uso solo durante la visualizzazione di video in una superficie di sovrapposizione. La nuova superficie contiene dati dal campo uniforme di un segnale video. Questo flag non può essere usato con il flag di DDFLIP_ODD.

DDFLIP_STEREO

DirectDraw capovolge e visualizza una superficie stereo principale. Quando questo flag è impostato, è abilitata la scalabilità automatica stereo. L'hardware si capovolge automaticamente tra i buffer sinistro e destro durante ogni aggiornamento dello schermo.

DDFLIP_INTERVAL2

DDFLIP_INTERVAL3

DDFLIP_INTERVAL4

I flag DDFLIP_INTERVAL2, DDFLIP_INTERVAL3 e DDFLIP_INTERVAL4 indicano il numero di ritrazioni verticali da attendere tra ogni capovolgimento. Il valore predefinito è 1. DirectDraw restituisce DERR_WASSTILLDRAWING per ogni superficie coinvolta nel capovolgimento fino a quando non si è verificato il numero specificato di ritratti verticali. Se DDFLIP_INTERVAL2 è impostato, DirectDraw si capovolge ogni seconda sincronizzazione verticale; se DDFLIP_INTERVAL3, in ogni terza sincronizzazione; e se DDFLIP_INTERVAL4, ogni quarta sincronizzazione.

Questi flag sono validi solo se DDCAPS2_FLIPINTERVAL bit è impostato nel membro dwCaps2 della struttura DDCAPS restituita per l'hardware di visualizzazione.

DDFLIP_NOVSYNC

Fa sì che DirectDraw esegua il capovolgimento fisico il più vicino possibile alla riga di analisi successiva. Le operazioni successive che coinvolgono le due superfici capovolte non controllano se il capovolgimento fisico è terminato, ovvero non restituiscono DDERR_WASSTILLDRAWING per tale motivo (ma potrebbero essere per altri motivi). Ciò consente a un'applicazione di eseguire capovolgimenti a una frequenza maggiore rispetto alla frequenza di aggiornamento del monitoraggio, ma potrebbe introdurre artefatti visibili.

Se DDCAPS2_FLIPNOVSYNC non è impostato nel membro dwCaps2 della struttura DDCAPS restituita per l'hardware visualizzato, DDFLIP_NOVSYNC non ha alcun effetto.

DDFLIP_ODD

Per l'uso solo durante la visualizzazione di video in una superficie di sovrapposizione. La nuova superficie contiene dati dal campo dispari di un segnale video. Questo flag non può essere usato con il flag DDFLIP_EVEN.

DDFLIP_WAIT

In genere, se il capovolgimento non può essere configurato perché lo stato dell'hardware di visualizzazione non è appropriato, il DDERR_WASSTILLDRAWING errore restituisce immediatamente e non si verifica alcun capovolgimento. L'impostazione di questo flag causa il tentativo di scorrimento di Flip se riceve l'errore di DDERR_WASSTILLDRAWING dal livello di astrazione hardware (HAL). Flip non restituisce finché l'operazione di scorrimento non è stata configurata correttamente o un altro errore, ad esempio DDERR_SURFACEBUSY, viene restituito.

Valore restituito

Se il metodo ha esito positivo, il valore restituito è DD_OK.

Se ha esito negativo, il metodo può restituire uno dei valori di errore seguenti:

  • DDERR_GENERIC
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NOFLIPHW
  • DDERR_NOTFLIPPABLE
  • DDERR_SURFACEBUSY
  • DDERR_SURFACELOST
  • DDERR_UNSUPPORTED
  • DDERR_WASSTILLDRAWING

Commenti

Con IDirectDrawSurface7, il comportamento predefinito di Flip consiste nell'attendere il completamento dell'acceleratore. Pertanto, in condizioni predefinite, Flip non restituisce mai DDERR_WASSTILLDRAWING. Se si desidera visualizzare i codici di errore e non attendere l'esito positivo dell'operazione di capovolgimento, usare il flag di DDFLIP_DONOTWAIT.

Il capovolgimento può essere chiamato solo per una superficie con le funzionalità di DDSCAPS_FLIP e DDSCAPS_FRONTBUFFER. La memoria di visualizzazione precedentemente associata al buffer anteriore è associata al buffer indietro.

Il parametro lpDDSurfaceTargetOverride viene usato in rari casi in cui il buffer indietro non è il buffer che dovrebbe diventare il buffer anteriore. In genere, questo parametro è NULL.

Flip è sempre sincronizzato con il vuoto verticale. Se la superficie è stata assegnata a una porta video, questo metodo aggiorna la superficie di sovrapposizione visibile e la superficie di destinazione della porta video.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione ddraw.h
Libreria Ddraw.lib
DLL Ddraw.dll

Vedi anche

IDirectDrawSurface7