Metodo ID3D11DeviceContext1::SwapDeviceContextState (d3d11_1.h)
Attiva l'oggetto stato del contesto specificato e modifica il comportamento corrente del dispositivo in Direct3D 11, Direct3D 10.1 o Direct3D 10.
Sintassi
void SwapDeviceContextState(
[in] ID3DDeviceContextState *pState,
[out, optional] ID3DDeviceContextState **ppPreviousState
);
Parametri
[in] pState
Puntatore all'interfaccia ID3DDeviceContextState per l'oggetto stato del contesto creato in precedenza tramite il metodo ID3D11Device1::CreateDeviceContextState . Se SwapDeviceContextState viene chiamato con pState impostato su NULL, la chiamata non ha alcun effetto.
[out, optional] ppPreviousState
Puntatore a una variabile che riceve un puntatore all'interfaccia ID3DDeviceContextState per l'oggetto stato del contesto attivato in precedenza.
Valore restituito
nessuno
Osservazioni
SwapDeviceContextState modifica il comportamento del dispositivo. Questo comportamento del dispositivo dipende dall'interfaccia emulata passata al parametro EmulatedInterface del metodo ID3D11Device1::CreateDeviceContextState quando si è creato l'oggetto stato del contesto.
SwapDeviceContextState non è supportato in un contesto posticipato.
SwapDeviceContextState disabilita le interfacce del dispositivo incompatibili ID3D10Device, ID3D10Device1, ID3D11Device e ID3D11Device1. Quando un oggetto stato di contesto è attivo, il runtime disabilita determinati metodi nelle interfacce del dispositivo e del contesto. Oggetto stato del contesto creato con __uuidof(ID3D11Device1)
o __uuidof(ID3D11Device)
disattiva la maggior parte delle interfacce del dispositivo Direct3D 10. Oggetto stato del contesto creato con __uuidof(ID3D10Device1)
o __uuidof(ID3D10Device)
disattiva la maggior parte dei metodi ID3D11DeviceContext .
Per altre informazioni su questo comportamento, vedere ID3D11Device1::CreateDeviceContextState.
SwapDeviceContextState attiva l'oggetto stato del contesto specificato da pState. Ciò significa che i comportamenti del dispositivo associati al livello di funzionalità dell'oggetto dello stato di contesto e l'interfaccia compatibile vengono attivati nel dispositivo Direct3D fino alla chiamata successiva a SwapDeviceContextState. Inoltre, qualsiasi stato salvato quando l'ultimo oggetto stato del contesto è stato riattivato, in modo che lo stato precedente venga sostituito.
SwapDeviceContextState imposta ppPreviousState sull'oggetto stato del contesto attivato più di recente. L'oggetto consente al chiamante di salvare e quindi ripristinare lo stato del dispositivo precedente. Questo comportamento è utile in un'architettura plug-in, ad esempio Direct2D che condivide un dispositivo Direct3D con i plug-in. Un'interfaccia Direct2D può usare oggetti di stato del contesto per salvare e ripristinare lo stato dell'applicazione.
Se il chiamante non ha precedentemente chiamato il metodo ID3D11Device1::CreateDeviceContextState per creare un oggetto stato di contesto precedente, SwapDeviceContextState imposta ppPreviousState sull'oggetto stato del contesto predefinito. In entrambi i casi, l'utilizzo di SwapDeviceContextState è lo stesso.
Il livello di funzionalità specificato dall'applicazione e scelto dall'oggetto stato di contesto dall'elenco accettabile fornito dall'applicazione a ID3D11Device1::CreateDeviceContextState controlla il livello di funzionalità del contesto immediato ogni volta che l'oggetto stato del contesto è attivo. Poiché il dispositivo Direct3D 11 è senza thread, i metodi del dispositivo non possono eseguire query sul livello di funzionalità di contesto immediato corrente. Il dispositivo viene invece eseguito a livello di funzionalità che corrisponde al massimo di tutti i livelli di funzionalità degli oggetti di stato del contesto creati in precedenza. Ciò significa che il livello di funzionalità del dispositivo può aumentare dinamicamente.
Il livello di funzionalità dell'oggetto stato del contesto controlla le funzionalità disponibili dal contesto immediato. Tuttavia, per mantenere il contratto senza thread dei metodi del dispositivo Direct3D 11, ovvero i metodi di creazione delle risorse in particolare, il livello di funzionalità associato superiore di tutti gli oggetti di stato del contesto creati controlla il set di risorse create dal dispositivo.
Poiché l'interfaccia dell'oggetto stato del contesto viene pubblicata dal contesto immediato, l'interfaccia richiede lo stesso modello di threading del contesto immediato. In particolare, SwapDeviceContextState è a thread singolo rispetto agli altri metodi di contesto immediati e rispetto ai metodi equivalenti di ID3D10Device.
Fondamentale, poiché solo uno dei comportamenti direct3D 10 o Direct3D 11 può essere disponibile alla volta, una delle interfacce Direct3D 10 e Direct3D 11 deve interrompere il contratto di conteggio dei ref. Per evitare questa situazione, l'attivazione di un oggetto stato di contesto disattiva l'interfaccia della versione non compatibile. Inoltre, se si chiama un metodo di un'interfaccia di versione non compatibile, la chiamata ha esito negativo se il metodo ha restituito void tipo, restituisce un valore HRESULT di E_INVALIDARG o imposta qualsiasi parametro out su NULL.
Quando si passa dalla modalità Direct3D 11 alla modalità Direct3D 10 o alla modalità Direct3D 10.1, il comportamento di associazione del dispositivo cambia. In particolare, la versione finale di una risorsa induce unbind in modalità Direct3D 10 o modalità Direct3D 10.1. Durante la versione finale un'applicazione rilascia tutti i riferimenti della risorsa, inclusi riferimenti indiretti, ad esempio il collegamento dalla vista alla risorsa e il collegamento dall'oggetto stato del contesto a una delle risorse associate all'oggetto stato del contesto. Qualsiasi risorsa associata a cui l'applicazione non ha riferimento non è associata e eliminata, per mantenere il comportamento Direct3D 10.
SwapDeviceContextState non influisce sullo stato impostato da ID3D11VideoContext .
Gli elenchi di comandi generati da contesti posticipati non contengono un riferimento agli oggetti di stato del contesto e non sono interessati dagli aggiornamenti futuri agli oggetti di stato del contesto.
Nessun oggetto asincrono è interessato da SwapDeviceContextState. Ad esempio, se una query è attiva prima di una chiamata a SwapDeviceContextState, è ancora attiva dopo la chiamata.
Requisiti
Client minimo supportato | Windows 8 e Platform Update per Windows 7 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 e Aggiornamento della piattaforma per Windows Server 2008 R2 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | d3d11_1.h |
Libreria | D3D11.lib |