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 |