Condividi tramite


Metodo IDXGISwapChain::ResizeBuffers (dxgi.h)

Modifica le dimensioni del buffer indietro, il formato e il numero di buffer della catena di scambio. Questa operazione deve essere chiamata quando la finestra dell'applicazione viene ridimensionata.

Sintassi

HRESULT ResizeBuffers(
  UINT        BufferCount,
  UINT        Width,
  UINT        Height,
  DXGI_FORMAT NewFormat,
  UINT        SwapChainFlags
);

Parametri

BufferCount

Tipo: UINT

Numero di buffer nella catena di scambio (inclusi tutti i buffer indietro e front-buffer). Questo numero può essere diverso dal numero di buffer con cui è stata creata la catena di scambio. Questo numero non può essere maggiore di DXGI_MAX_SWAP_CHAIN_BUFFERS. Impostare questo numero su zero per mantenere il numero esistente di buffer nella catena di scambio. Non è possibile specificare meno di due buffer per il modello di presentazione flip.

Width

Tipo: UINT

Nuova larghezza del buffer posteriore. Se si specifica zero, DXGI userà la larghezza dell'area client della finestra di destinazione. Non è possibile specificare la larghezza come zero se si chiama il metodo IDXGIFactory2::CreateSwapChainForComposition per creare la catena di scambio per una superficie di composizione.

Height

Tipo: UINT

Nuova altezza del buffer posteriore. Se si specifica zero, DXGI userà l'altezza dell'area client della finestra di destinazione. Non è possibile specificare l'altezza come zero se si chiama il metodo IDXGIFactory2::CreateSwapChainForComposition per creare la catena di scambio per una superficie di composizione.

NewFormat

Tipo: DXGI_FORMAT

Valore DXGI_FORMAT tipizzato per il nuovo formato del buffer indietro. Impostare questo valore su DXGI_FORMAT_UNKNOWN per mantenere il formato esistente del buffer back. Il modello di presentazione flip supporta un set di formati più limitato rispetto al modello bit-block transfer (bitblt).

SwapChainFlags

Tipo: UINT

Combinazione di valori tipizzati di DXGI_SWAP_CHAIN_FLAG combinati usando un'operazione OR bit per bit. Il valore risultante specifica le opzioni per il comportamento della catena di scambio.

Valore restituito

Tipo: HRESULT

Restituisce S_OK se ha esito positivo; codice di errore in caso contrario. Per un elenco di codici di errore, vedere DXGI_ERROR.

Commenti

Non è possibile ridimensionare una catena di scambio a meno che non si rilascino tutti i riferimenti in sospeso ai buffer back. È necessario rilasciare tutti i riferimenti diretti e indiretti nei buffer indietro per consentire a ResizeBuffers di avere esito positivo.

I riferimenti diretti vengono mantenuti dall'applicazione dopo che chiama AddRef in una risorsa.

I riferimenti indiretti vengono mantenuti dalle viste a una risorsa, associando una visualizzazione della risorsa a un contesto del dispositivo, un elenco di comandi che ha usato la risorsa, un elenco di comandi che ha usato una vista per tale risorsa, un elenco di comandi che ha eseguito un altro elenco di comandi che ha usato la risorsa e così via.

Prima di chiamare ResizeBuffers, assicurarsi che l'applicazione rilascia tutti i riferimenti (chiamando il numero appropriato di chiamate di rilascio ) sulle risorse, sulle visualizzazioni della risorsa e su tutti gli elenchi di comandi che usano le risorse o le visualizzazioni e assicurarsi che né la risorsa né una vista sia ancora associata a un contesto del dispositivo. È possibile usare ID3D11DeviceContext::ClearState per assicurarsi che tutti i riferimenti vengano rilasciati. Se una visualizzazione è associata a un contesto posticipato, è necessario eliminare anche l'elenco di comandi parzialmente compilato (chiamando ID3D11DeviceContext::ClearState, ID3D11DeviceContext::FinishCommandList, quindi Release nell'elenco dei comandi). Dopo aver chiamato ResizeBuffers, è possibile ripetere le interfacce di query tramite IDXGISwapChain::GetBuffer.

Per le catene di scambio create con DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE, prima di chiamare ResizeBuffers, chiamare anche IDXGISurface1::ReleaseDC nella superficie back-buffer della catena di scambio per assicurarsi di non avere contesti di dispositivo GDI (DC) in sospeso.

È consigliabile chiamare ResizeBuffers quando viene ridimensionata una finestra client, ovvero quando un'applicazione riceve un messaggio di WM_SIZE.

L'unica differenza tra IDXGISwapChain::ResizeBuffers in Windows 8 rispetto a Windows 7 è costituita da catene di scambio di modelli di presentazione capovolte create con il DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL o DXGI_SWAP_EFFECT_FLIP_DISCARD valore impostato. In Windows 8 è necessario chiamare ResizeBuffers per realizzare una transizione tra la modalità schermo intero e la modalità finestra; in caso contrario, la chiamata successiva al metodo IDXGISwapChain::P resent ha esito negativo.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione dxgi.h
Libreria DXGI.lib

Vedi anche

IDXGISwapChain