Condividi tramite


Metodo ID3D11Device1::CreateDeviceContextState (d3d11_1.h)

Crea un oggetto stato del contesto che contiene tutto lo stato di Microsoft Direct3D e un comportamento Direct3D.

Sintassi

HRESULT CreateDeviceContextState(
                  UINT                    Flags,
  [in]            const D3D_FEATURE_LEVEL *pFeatureLevels,
                  UINT                    FeatureLevels,
                  UINT                    SDKVersion,
                  REFIID                  EmulatedInterface,
  [out, optional] D3D_FEATURE_LEVEL       *pChosenFeatureLevel,
  [out, optional] ID3DDeviceContextState  **ppContextState
);

Parametri

Flags

Tipo: UINT

Combinazione di valori D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG combinati tramite un'operazione OR bit per bit. Il valore risultante specifica come creare l'oggetto stato del contesto. Il flag D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED è attualmente l'unico flag definito. Se il dispositivo originale è stato creato con D3D11_CREATE_DEVICE_SINGLETHREADED, è necessario creare tutti gli oggetti di stato del contesto da tale dispositivo con il flag D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED .

Se si imposta il flag a thread singolo sia per l'oggetto stato del contesto che per il dispositivo, si garantisce di chiamare l'intero set di metodi di contesto e i metodi del dispositivo solo da un thread. Non è quindi necessario usare sezioni critiche per sincronizzare l'accesso al contesto di dispositivo e il runtime può evitare l'uso di tali sezioni critiche a elevato utilizzo del processore.

[in] pFeatureLevels

Tipo: const D3D_FEATURE_LEVEL*

Puntatore a una matrice di valori D3D_FEATURE_LEVEL . La matrice può contenere elementi dall'elenco seguente e determina l'ordine dei livelli di funzionalità per cui viene tentata la creazione. A differenza di D3D11CreateDevice, non è possibile impostare pFeatureLevels su NULL perché non esiste una matrice a livello di funzionalità predefinita.

{
    D3D_FEATURE_LEVEL_11_1,
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_3,
    D3D_FEATURE_LEVEL_9_2,
    D3D_FEATURE_LEVEL_9_1,
};
          

FeatureLevels

Tipo: UINT

Numero di elementi in pFeatureLevels. A differenza di D3D11CreateDevice, è necessario impostare FeatureLevels su maggiore di 0 perché non è possibile impostare pFeatureLevels su NULL.

SDKVersion

Tipo: UINT

Versione dell'SDK. È necessario impostare questo parametro su D3D11_SDK_VERSION.

EmulatedInterface

Tipo: REFIID

Identificatore univoco globale (GUID) per l'interfaccia emulata. Questo valore specifica il comportamento del dispositivo quando l'oggetto stato del contesto è attivo. I valori validi vengono ottenuti usando l'operatore __uuidof nelle interfacce ID3D10Device, ID3D10Device1, ID3D11Device e ID3D11Device1 . Vedere la sezione Osservazioni.

[out, optional] pChosenFeatureLevel

Tipo: D3D_FEATURE_LEVEL*

Puntatore a una variabile che riceve un valore D3D_FEATURE_LEVEL dalla matrice pFeatureLevels . Si tratta del primo valore della matrice con cui CreateDeviceContextState ha avuto esito positivo nella creazione dell'oggetto stato del contesto. Se la chiamata a CreateDeviceContextState ha esito negativo, la variabile a cui punta pChosenFeatureLevel viene impostata su zero.

[out, optional] ppContextState

Tipo: ID3DDeviceContextState**

Indirizzo di un puntatore a un oggetto ID3DDeviceContextState che rappresenta lo stato di un dispositivo Direct3D.

Valore restituito

Tipo: HRESULT

Questo metodo restituisce uno dei codici restituiti Direct3D 11.

Commenti

Il valore REFIID dell'interfaccia emulata è un GUID ottenuto tramite l'operatore __uuidof . Ad esempio, __uuidof(ID3D11Device) ottiene il GUID dell'interfaccia a un dispositivo Microsoft Direct3D 11.

Chiamare il metodo ID3D11DeviceContext1::SwapDeviceContextState per attivare l'oggetto stato del contesto. Quando l'oggetto stato del contesto è attivo, i comportamenti del dispositivo associati al livello di funzionalità dell'oggetto stato di contesto e alla relativa interfaccia compatibile vengono attivati nel dispositivo Direct3D fino alla chiamata successiva a SwapDeviceContextState.

Quando un oggetto stato del contesto è attivo, il runtime disabilita determinati metodi nelle interfacce del dispositivo e del contesto. Ad esempio, un oggetto di stato del contesto creato con __uuidof(ID3D11Device) causerà la disattivazione della maggior parte delle interfacce del dispositivo Microsoft Direct3D 10 e di un oggetto stato di contesto creato con __uuidof(ID3D10Device1) o __uuidof(ID3D10Device) causerà la disattivazione della maggior parte dei metodi ID3D11DeviceContext da parte del runtime. Questo comportamento garantisce che un utente di una delle due interfacce emulate non possa impostare lo stato del dispositivo che l'altra interfaccia emulata non è in grado di esprimere. Questa restrizione garantisce che l'interfaccia emulata ID3D10Device1 rifletta in modo accurato lo stato completo della pipeline e che l'interfaccia emulata non funzionerà contrariamente alla relativa definizione di interfaccia originale.

Si supponga, ad esempio, che la fase a mosaico venga attivata tramite l'interfaccia ID3D11DeviceContext quando si crea il dispositivo tramite D3D11CreateDevice o D3D11CreateDeviceAndSwapChain, anziché tramite gli equivalenti Direct3D 10. Poiché il contesto Direct3D 11 è attivo, un'interfaccia Direct3D 10 è inattiva quando la si recupera per la prima volta tramite QueryInterface. Ciò significa che non è possibile passare immediatamente un'interfaccia Direct3D 10 recuperata da un dispositivo Direct3D 11 a una funzione. Devi prima chiamare SwapDeviceContextState per attivare un oggetto di stato del contesto compatibile con Direct3D 10.

La tabella seguente illustra i metodi attivi e inattivi per ogni interfaccia emulata.

Interfaccia emulata Interfacce del dispositivo attivo o di contesto immediato Interfacce di contesto inattive o inattive

ID3D11Device o

ID3D11Device1

ID3D11Device

IDXGIDevice +

IDXGIDevice1 +

IDXGIDevice2

ID3D10Multithread

ID3D10Device

ID3D10Device1 o

ID3D10Device

ID3D10Device

ID3D10Device1

IDXGIDevice +

IDXGIDevice1

ID3D10Multithread

ID3D11Device

ID3D11DeviceContext (come pubblicato dal contesto immediato. L'interfaccia emulata direct3D 10 o Microsoft Direct3D 10.1 non ha alcun effetto sui contesti posticipati.

 

Nella tabella seguente vengono illustrati i metodi di contesto immediati che il runtime disabilita quando sono attivi gli oggetti di stato del contesto indicati.

Metodi di ID3D11DeviceContext quando __uuidof(ID3D10Device1) o __uuidof(ID3D10Device) è attivo Metodi di ID3D10Device quando __uuidof(ID3D11Device) è attivo

ClearDepthStencilView

ClearDepthStencilView

ClearRenderTargetView

ClearRenderTargetView

ClearState

ClearState

ClearUnorderedAccessViewUint

ClearUnorderedAccessViewFloat

CopyResource

CopyResource

CopyStructureCount

CopySubresourceRegion

CopySubresourceRegion

CSGetConstantBuffers

CSGetSamplers

CSGetShader

CSGetShaderResources

CSGetUnorderedAccessViews

CSSetConstantBuffers

CSSetSamplers

CSSetShader

CSSetShaderResources

CSSetUnorderedAccessViews

Dispatch

DispatchIndirect

CreateBlendState

Disegna

Disegna

DrawAuto

DrawAuto

DrawIndexed

DrawIndexed

DrawIndexedInstanced

DrawIndexedInstanced

DrawIndexedInstancedIndirect

DrawInstanced

DrawInstanced

DrawInstancedIndirect

DSGetConstantBuffers

DSGetSamplers

DSGetShader

DSGetShaderResources

DSSetConstantBuffers

DSSetSamplers

DSSetShader

DSSetShaderResources

ExecuteCommandList

FinishCommandList

Svuotamento

Svuotamento

GenerateMips

GenerateMips

GetPredication

GetPredication

GetResourceMinLOD

GetType

GetTextFilterSize

GSGetConstantBuffers

GSGetConstantBuffers

GSGetSamplers

GSGetSamplers

GSGetShader

GSGetShader

GSGetShaderResources

GSGetShaderResources

GSSetConstantBuffers

GSSetConstantBuffers

GSSetSamplers

GSSetSamplers

GSSetShader

GSSetShader

GSSetShaderResources

GSSetShaderResources

HSGetConstantBuffers

HSGetSamplers

HSGetShader

HSGetShaderResources

HSSetConstantBuffers

HSSetSamplers

HSSetShader

HSSetShaderResources

IAGetIndexBuffer

IAGetIndexBuffer

IAGetInputLayout

IAGetInputLayout

Topologia IAGetPrimitiveTopology

Topologia IAGetPrimitiveTopology

IAGetVertexBuffers

IAGetVertexBuffers

IASetIndexBuffer

IASetIndexBuffer

IASetInputLayout

IASetInputLayout

Topologia IASetPrimitiveTopology

Topologia IASetPrimitiveTopology

IASetVertexBuffers

IASetVertexBuffers

OMGetBlendState

OMGetBlendState

OMGetDepthStencilState

OMGetDepthStencilState

OMGetRenderTargets

OMGetRenderTargets

OMGetRenderTargetsAndUnorderedAccessViews

OMSetBlendState

OMSetBlendState

OMSetDepthStencilState

OMSetDepthStencilState

OMSetRenderTargets

OMSetRenderTargets

OMSetRenderTargetsAndUnorderedAccessViews

PSGetConstantBuffers

PSGetConstantBuffers

PSGetSamplers

PSGetSamplers

PSGetShader

PSGetShader

PSGetShaderResources

PSGetShaderResources

PSSetConstantBuffers

PSSetConstantBuffers

PSSetSamplers

PSSetSamplers

PSSetShader

PSSetShader

PSSetShaderResources

PSSetShaderResources

ResolveSubresource

ResolveSubresource

RSGetScissorRects

RSGetScissorRects

RSGetState

RSGetState

RSGetViewports

RSGetViewports

RSSetScissorRects

RSSetScissorRects

RSSetState

RSSetState

RSSetViewports

RSSetViewports

SetPredication

SetPredication

SetResourceMinLOD

SetTextFilterSize

SOGetTargets

SOGetTargets

SOSetTargets

SOSetTargets

UpdateSubresource

UpdateSubresource

VSGetConstantBuffers

VSGetConstantBuffers

VSGetSamplers

VSGetSamplers

VSGetShader

VSGetShader

VSGetShaderResources

VSGetShaderResources

VSSetConstantBuffers

VSSetConstantBuffers

VSSetSamplers

VSSetSamplers

VSSetShader

VSSetShader

VSSetShaderResources

VSSetShaderResources

 

La tabella seguente mostra i metodi di contesto immediati che il runtime non disabilita quando gli oggetti di stato del contesto indicati sono attivi.

Metodi di ID3D11DeviceContext quando __uuidof(ID3D10Device1) o __uuidof(ID3D10Device) è attivo Metodi di ID3D10Device quando __uuidof(ID3D11Device) è attivo

Inizia

Fine

GetCreationFlags

GetPrivateData

GetContextFlags

GetData

Mappa

Unmap

 

La tabella seguente mostra i metodi di interfaccia ID3D10Device che il runtime non disabilita perché non sono metodi di contesto immediati.

Metodi di ID3D10Device

CheckCounter

CheckCounterInfo

Creare*, ad esempio CreateQuery

GetDeviceRemovedReason

GetExceptionMode

OpenSharedResource

SetExceptionMode

SetPrivateData

SetPrivateDataInterface

 

Windows Phone 8: questa API è supportata.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Aggiornamento della piattaforma 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

Vedi anche

ID3D11Device1