ID3D11Device1::CreateDeviceContextState-Methode (d3d11_1.h)

Erstellt ein Kontextzustandsobjekt, das den gesamten Microsoft Direct3D-Zustand und ein gewisses Direct3D-Verhalten enthält.

Syntax

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
);

Parameter

Flags

Typ: UINT

Eine Kombination aus D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG Werten, die mithilfe eines bitweisen OR-Vorgangs kombiniert werden. Der resultierende Wert gibt an, wie das Kontextzustandsobjekt erstellt wird. Das D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED-Flag ist derzeit das einzige definierte Flag. Wenn das ursprüngliche Gerät mit D3D11_CREATE_DEVICE_SINGLETHREADED erstellt wurde, müssen Sie alle Kontextzustandsobjekte dieses Geräts mit dem D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED-Flag erstellen.

Wenn Sie das Singlethread-Flag sowohl für das Kontextzustandsobjekt als auch für das Gerät festlegen, garantieren Sie, dass Sie den gesamten Satz von Kontextmethoden und Gerätemethoden nur aus einem Thread aufrufen. Sie müssen daher keine kritischen Abschnitte verwenden, um den Zugriff auf den Gerätekontext zu synchronisieren, und die Runtime kann die Arbeit mit diesen prozessorintensiven kritischen Abschnitten vermeiden.

[in] pFeatureLevels

Typ: const D3D_FEATURE_LEVEL*

Ein Zeiger auf ein Array von D3D_FEATURE_LEVEL Werten. Das Array kann Elemente aus der folgenden Liste enthalten und bestimmt die Reihenfolge der Featureebenen, für die die Erstellung versucht wird. Im Gegensatz zu D3D11CreateDevice können Sie pFeatureLevels nicht auf NULL festlegen, da es kein Standardarray auf Featureebene gibt.

{
    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

Typ: UINT

Die Anzahl der Elemente in pFeatureLevels. Im Gegensatz zu D3D11CreateDevice müssen Sie FeatureLevels auf größer als 0 festlegen, da Sie pFeatureLevels nicht auf NULL festlegen können.

SDKVersion

Typ: UINT

Die SDK-Version. Sie müssen diesen Parameter auf D3D11_SDK_VERSION festlegen.

EmulatedInterface

Typ: REFIID

Der globally unique Identifier (GUID) für die emulierte Schnittstelle. Dieser Wert gibt das Verhalten des Geräts an, wenn das Kontextstatusobjekt aktiv ist. Gültige Werte werden mithilfe des __uuidof-Operators für die Schnittstellen ID3D10Device, ID3D10Device1, ID3D11Device und ID3D11Device1 abgerufen. Siehe Hinweise.

[out, optional] pChosenFeatureLevel

Typ: D3D_FEATURE_LEVEL*

Ein Zeiger auf eine Variable, die einen D3D_FEATURE_LEVEL Wert aus dem pFeatureLevels-Array empfängt . Dies ist der erste Arraywert, mit dem CreateDeviceContextState das Kontextzustandsobjekt erfolgreich erstellt hat. Wenn der Aufruf von CreateDeviceContextState fehlschlägt, wird die Variable, auf die von pChosenFeatureLevel verwiesen wird, auf 0 festgelegt.

[out, optional] ppContextState

Typ: ID3DDeviceContextState**

Die Adresse eines Zeigers auf ein ID3DDeviceContextState-Objekt , das den Zustand eines Direct3D-Geräts darstellt.

Rückgabewert

Typ: HRESULT

Diese Methode gibt einen der Direct3D 11-Rückgabecodes zurück.

Hinweise

Der REFIID-Wert der emulierten Schnittstelle ist eine GUID, die mithilfe des __uuidof-Operators abgerufen wird. Ruft beispielsweise __uuidof(ID3D11Device) die GUID der Schnittstelle für ein Microsoft Direct3D 11-Gerät ab.

Rufen Sie die ID3D11DeviceContext1::SwapDeviceContextState-Methode auf, um das Kontextstatusobjekt zu aktivieren. Wenn das Kontextstatusobjekt aktiv ist, werden die Geräteverhalten, die sowohl der Featureebene des Kontextzustandsobjekts als auch seiner kompatiblen Schnittstelle zugeordnet sind, auf dem Direct3D-Gerät bis zum nächsten Aufruf von SwapDeviceContextState aktiviert.

Wenn ein Kontextzustandsobjekt aktiv ist, deaktiviert die Runtime bestimmte Methoden auf dem Gerät und den Kontextschnittstellen. Ein Kontextzustandsobjekt, das mit __uuidof(ID3D11Device) erstellt wird, bewirkt beispielsweise, dass die Runtime die meisten Microsoft Direct3D 10-Geräteschnittstellen deaktiviert, und ein Kontextzustandsobjekt, das mit __uuidof(ID3D10Device1) oder __uuidof(ID3D10Device) erstellt wird, bewirkt, dass die Runtime die meisten ID3D11DeviceContext-Methoden deaktiviert. Dieses Verhalten stellt sicher, dass ein Benutzer der beiden emulierten Schnittstellen nicht den Gerätezustand festlegen kann, den die andere emulierte Schnittstelle nicht ausdrücken kann. Diese Einschränkung garantiert, dass die emulierte ID3D1Device1-Schnittstelle den vollständigen Zustand der Pipeline genau widerspiegelt und dass die emulierte Schnittstelle nicht im Gegensatz zu ihrer ursprünglichen Schnittstellendefinition funktioniert.

Angenommen, die Tessellationsphase wird über die ID3D11DeviceContext-Schnittstelle aktiviert, wenn Sie das Gerät über D3D11CreateDevice oder D3D11CreateDeviceAndSwapChain anstelle der Direct3D 10-Entsprechungen erstellen. Da der Direct3D 11-Kontext aktiv ist, ist eine Direct3D 10-Schnittstelle inaktiv, wenn Sie sie zum ersten Mal über QueryInterface abrufen. Dies bedeutet, dass Sie eine Direct3D 10-Schnittstelle, die Sie von einem Direct3D 11-Gerät abgerufen haben, nicht sofort an eine Funktion übergeben können. Sie müssen zuerst SwapDeviceContextState aufrufen, um ein Direct3D 10-kompatibles Kontextzustandsobjekt zu aktivieren.

Die folgende Tabelle zeigt die Methoden, die für jede emulierte Schnittstelle aktiv und inaktiv sind.

Emulierte Schnittstelle Aktive Geräte- oder unmittelbare Kontextschnittstellen Inaktive Geräte- oder unmittelbare Kontextschnittstellen

ID3D11Gerät oder

ID3D11Device1

ID3D11Device

IDXGIDevice +

IDXGIDevice1 +

IDXGIDevice2

ID3D10Multithread

ID3D10Geräte

ID3D10Device1 oder

ID3D10Geräte

ID3D10Geräte

ID3D10Device1

IDXGIDevice +

IDXGIDevice1

ID3D10Multithread

ID3D11Device

ID3D11DeviceContext (Wie vom unmittelbaren Kontext veröffentlicht. Die emulierte Direct3D 10- oder Microsoft Direct3D 10.1-Schnittstelle hat keine Auswirkungen auf verzögerte Kontexte.)

 

Die folgende Tabelle zeigt die unmittelbaren Kontextmethoden, die die Runtime deaktiviert, wenn die angegebenen Kontextstatusobjekte aktiv sind.

Methoden von ID3D11DeviceContext , wenn __uuidof(ID3D10Device1) oder __uuidof(ID3D10Device) aktiv ist Methoden von ID3D10Device , wenn __uuidof(ID3D11Device) aktiv ist

ClearDepthStencilView

ClearDepthStencilView

ClearRenderTargetView

ClearRenderTargetView

ClearState

ClearState

ClearUnorderedAccessViewUint

ClearUnorderedAccessViewFloat

CopyResource

CopyResource

CopyStructureCount

CopySubresourceRegion

CopySubresourceRegion

CSGetConstantBuffers

CSGetSampler

CSGetShader

CSGetShaderResources

CSGetUnorderedAccessViews

CSSetConstantBuffers

CSSetSampler

CSSetShader

CSSetShaderResources

CSSetUnorderedAccessViews

Dispatch

DispatchIndirect

CreateBlendState

Zeichnen

Zeichnen

DrawAuto

DrawAuto

DrawIndexed

DrawIndexed

DrawIndexedInstanced

DrawIndexedInstanced

DrawIndexedInstancedIndirect

DrawInstanced

DrawInstanced

DrawInstancedIndirect

DSGetConstantBuffers

DSGetSamplers

DSGetShader

DSGetShaderResources

DSSetConstantBuffers

DSSetSamplers

DSSetShader

DSSetShaderResources

ExecuteCommandList

FinishCommandList

Leerung

Leerung

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

IAGetPrimitiveTopology

IAGetPrimitiveTopology

IAGetVertexBuffers

IAGetVertexBuffers

IASetIndexBuffer

IASetIndexBuffer

IASetInputLayout

IASetInputLayout

IASetPrimitiveTopology

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

 

In der folgenden Tabelle sind die unmittelbaren Kontextmethoden aufgeführt, die die Laufzeit nicht deaktiviert, wenn die angegebenen Kontextzustandsobjekte aktiv sind.

Methoden von ID3D11DeviceContext , wenn __uuidof(ID3D10Device1) oder __uuidof(ID3D10Device) aktiv ist Methoden von ID3D10Device , wenn __uuidof(ID3D11Device) aktiv ist

Starten

ENDE

GetCreationFlags

GetPrivateData

GetContextFlags

GetData

Map

Unmap

 

In der folgenden Tabelle sind die ID3D10Device-Schnittstellenmethoden aufgeführt, die von der Runtime nicht deaktiviert werden, da sie keine direkten Kontextmethoden sind.

Methoden von ID3D10Device

CheckCounter

CheckCounterInfo

Create*, z. B. CreateQuery

GetDeviceRemovedReason

GetExceptionMode

OpenSharedResource

SetExceptionMode

SetPrivateData

SetPrivateDataInterface

 

Windows Phone 8: Diese API wird unterstützt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 und Plattformupdate für Windows Server 2008 R2 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile d3d11_1.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11Device1