Metodo IDirect3DDevice9::Reset (d3d9helper.h)

Reimposta il tipo, le dimensioni e il formato della catena di scambio.

Sintassi

HRESULT Reset(
  [in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);

Parametri

[in, out] pPresentationParameters

Tipo: D3DPRESENT_PARAMETERS*

Puntatore a una struttura D3DPRESENT_PARAMETERS , che descrive i nuovi parametri della presentazione. Questo valore non può essere NULL.

Quando si passa alla modalità schermo intero, Direct3D tenterà di trovare un formato desktop che corrisponda al formato del buffer nascosto, in modo che i formati di buffer nascosto e buffer anteriore siano identici (per eliminare la necessità di conversione dei colori).

Quando termina, questo metodo:

  • BackBufferCount, BackBufferWidth e BackBufferHeight sono impostati su zero.
  • BackBufferFormat è impostato su D3DFMT_UNKNOWN solo per la modalità finestra; una modalità schermo intero deve specificare un formato.

Valore restituito

Tipo: HRESULT

I valori restituiti possibili includono: D3D_OK, D3DERR_DEVICELOST, D3DERR_DEVICEREMOVED, D3DERR_DRIVERINTERNALERROR o D3DERR_OUTOFVIDEOMEMORY (vedere D3DERR).

Commenti

Se una chiamata a IDirect3DDevice9::Reset ha esito negativo, il dispositivo verrà inserito nello stato "perso" (come indicato da un valore restituito di D3DERR_DEVICELOST da una chiamata a IDirect3DDevice9::TestCooperativeLevel) a meno che non sia già nello stato "not reset" (come indicato da un valore restituito di D3DERR_DEVICENOTRESET da una chiamata a IDirect3DDevice9::TestCooperativeLevel). Per altre informazioni sull'uso di IDirect3DDevice9::TestCooperativeLevel e Dispositivi persi (Direct3D 9), vedere IDirect3DDevice9::Reset nel contesto dei dispositivi persi.

La chiamata a IDirect3DDevice9::Reset causa la perdita di tutte le superfici di memoria delle trame, le trame gestite vengono scaricate dalla memoria video e tutte le informazioni sullo stato andranno perse. Prima di chiamare il metodo IDirect3DDevice9::Reset per un dispositivo, un'applicazione deve rilasciare eventuali destinazioni di rendering esplicite, superfici stencil di profondità, catene di scambio aggiuntive, blocchi di stato e D3DPOOL_DEFAULT risorse associate al dispositivo.

Esistono due tipi diversi di catene di scambio: a schermo intero o finestrato. Se la nuova catena di scambio è a schermo intero, l'adattatore verrà posizionato nella modalità di visualizzazione corrispondente alle nuove dimensioni.

Le applicazioni Direct3D 9 possono aspettarsi che i messaggi vengano inviati durante questa chiamata (ad esempio, prima che venga restituita questa chiamata); le applicazioni devono adottare precauzioni per non chiamare in Direct3D in questo momento. Inoltre, quando IDirect3DDevice9::Reset ha esito negativo, gli unici metodi validi che possono essere chiamati sono IDirect3DDevice9::Reset, IDirect3DDevice9::TestCooperativeLevel e le varie funzioni membro Release. La chiamata a qualsiasi altro metodo può comportare un'eccezione.

Una chiamata a IDirect3DDevice9::Reset avrà esito negativo se viene chiamato su un thread diverso da quello usato per creare il dispositivo da reimpostare.

I pixel shader e i vertex shader sopravvivono alle chiamate IDirect3DDevice9::Reset per Direct3D 9. Non è necessario che vengano ricreati in modo esplicito dall'applicazione.

D3DFMT_UNKNOWN può essere specificato per il formato del buffer nascosto in modalità finestra quando si chiama IDirect3D9::CreateDevice, IDirect3DDevice9::Reset e IDirect3DDevice9::CreateAdditionalSwapChain. Ciò significa che l'applicazione non deve eseguire query sul formato desktop corrente prima di chiamare IDirect3D9::CreateDevice per la modalità finestra. Per la modalità schermo intero, è necessario specificare il formato del buffer nascosto. Se si imposta BackBufferCount su zero (BackBufferCount = 0) viene restituito un buffer nascosto.

Quando si tenta di reimpostare più schede di visualizzazione in un gruppo, impostare pPresentationParameters in modo che punti a una matrice di strutture D3DPRESENT_PARAMETERS , una per ogni visualizzazione nel gruppo di adattatori.

Se un dispositivo multihead è stato creato con D3DCREATE_ADAPTERGROUP_DEVICE, IDirect3DDevice9::Reset richiede una matrice di strutture D3DPRESENT_PARAMETERS in cui ogni struttura deve specificare uno schermo intero. Per tornare alla modalità finestra, l'applicazione deve eliminare definitivamente il dispositivo e ricreare un dispositivo non a più teste in modalità finestra.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione d3d9helper.h (include D3D9.h)
Libreria D3D9.lib

Vedi anche

D3DPRESENT_PARAMETERS

D3DSWAPEFFECT

IDirect3DDevice9

IDirect3DDevice9::P resent

Multihead (Direct3D 9)