Partager via


ID3D11Device1 ::CreateDeviceContextState, méthode (d3d11_1.h)

Crée un objet d’état de contexte qui contient tout l’état De Microsoft Direct3D et certains comportements Direct3D.

Syntaxe

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

Paramètres

Flags

Type : UINT

Combinaison de valeurs D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG combinées à l’aide d’une opération OR au niveau du bit. La valeur résultante spécifie comment créer l’objet d’état de contexte. L’indicateur D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED est actuellement le seul indicateur défini. Si l’appareil d’origine a été créé avec D3D11_CREATE_DEVICE_SINGLETHREADED, vous devez créer tous les objets d’état de contexte à partir de cet appareil avec l’indicateur D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED .

Si vous définissez l’indicateur à thread unique pour l’objet d’état de contexte et l’appareil, vous garantissez que vous n’appellez l’ensemble de méthodes de contexte et de méthodes d’appareil qu’à partir d’un seul thread. Vous n’avez donc pas besoin d’utiliser des sections critiques pour synchroniser l’accès au contexte de l’appareil, et le runtime peut éviter d’utiliser ces sections critiques nécessitant beaucoup de processeur.

[in] pFeatureLevels

Type : const D3D_FEATURE_LEVEL*

Pointeur vers un tableau de valeurs D3D_FEATURE_LEVEL . Le tableau peut contenir des éléments de la liste suivante et détermine l’ordre des niveaux de fonctionnalité pour lesquels la création est tentée. Contrairement à D3D11CreateDevice, vous ne pouvez pas définir pFeatureLevels sur NULL , car il n’existe aucun tableau de niveau de fonctionnalité par défaut.

{
    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

Type : UINT

Nombre d’éléments dans pFeatureLevels. Contrairement à D3D11CreateDevice, vous devez définir FeatureLevels sur supérieur à 0, car vous ne pouvez pas définir pFeatureLevels sur NULL.

SDKVersion

Type : UINT

Version du Kit de développement logiciel (SDK). Vous devez définir ce paramètre sur D3D11_SDK_VERSION.

EmulatedInterface

Type : REFIID

Identificateur global unique (GUID) pour l’interface émulée. Cette valeur spécifie le comportement de l’appareil lorsque l’objet d’état de contexte est actif. Les valeurs valides sont obtenues à l’aide de l’opérateur __uuidof sur les interfaces ID3D10Device, ID3D10Device1, ID3D11Device et ID3D11Device1 . Consultez la section Notes.

[out, optional] pChosenFeatureLevel

Type : D3D_FEATURE_LEVEL*

Pointeur vers une variable qui reçoit une valeur D3D_FEATURE_LEVEL du tableau pFeatureLevels . Il s’agit de la première valeur de tableau avec laquelle CreateDeviceContextState a réussi à créer l’objet d’état de contexte. Si l’appel à CreateDeviceContextState échoue, la variable pointée par pChosenFeatureLevel est définie sur zéro.

[out, optional] ppContextState

Type : ID3DDeviceContextState**

Adresse d’un pointeur vers un objet ID3DDeviceContextState qui représente l’état d’un appareil Direct3D.

Valeur retournée

Type : HRESULT

Cette méthode retourne l’un des codes de retour Direct3D 11.

Remarques

La valeur REFIID de l’interface émulée est un GUID obtenu à l’aide de l’opérateur __uuidof . Par exemple, __uuidof(ID3D11Device) obtient le GUID de l’interface vers un appareil Microsoft Direct3D 11.

Appelez la méthode ID3D11DeviceContext1 ::SwapDeviceContextState pour activer l’objet d’état de contexte. Lorsque l’objet d’état de contexte est actif, les comportements de l’appareil associés au niveau de fonctionnalité de l’objet d’état de contexte et à son interface compatible sont activés sur l’appareil Direct3D jusqu’à l’appel suivant à SwapDeviceContextState.

Lorsqu’un objet d’état de contexte est actif, le runtime désactive certaines méthodes sur l’appareil et les interfaces de contexte. Par exemple, un objet d’état de contexte créé avec __uuidof(ID3D11Device) entraîne la désactivation de la plupart des interfaces d’appareil Microsoft Direct3D 10 par le runtime, et un objet d’état de contexte créé avec __uuidof(ID3D10Device1) ou __uuidof(ID3D10Device) entraîne la désactivation du runtime de la plupart des méthodes ID3D11DeviceContext . Ce comportement garantit qu’un utilisateur de l’une ou l’autre interface émulée ne peut pas définir l’état de l’appareil que l’autre interface émulée ne peut pas exprimer. Cette restriction permet de garantir que l’interface émulée ID3D10Device1 reflète avec précision l’état complet du pipeline et que l’interface émulée ne fonctionnera pas contrairement à sa définition d’interface d’origine.

Par exemple, supposons que l’étape de mise en service soit activée via l’interface ID3D11DeviceContext lorsque vous créez l’appareil via D3D11CreateDevice ou D3D11CreateDeviceAndSwapChain, au lieu des équivalents Direct3D 10. Étant donné que le contexte Direct3D 11 est actif, une interface Direct3D 10 est inactive lorsque vous la récupérez pour la première fois via QueryInterface. Cela signifie que vous ne pouvez pas passer immédiatement une interface Direct3D 10 que vous avez récupérée d’un appareil Direct3D 11 à une fonction. Vous devez d’abord appeler SwapDeviceContextState pour activer un objet d’état de contexte compatible avec Direct3D 10.

Le tableau suivant montre les méthodes actives et inactives pour chaque interface émulée.

Interface émulée Interfaces d’appareil actif ou de contexte immédiat Appareils inactifs ou interfaces de contexte immédiates

ID3D11Device ou

ID3D11Device1

ID3D11Device

IDXGIDevice +

IDXGIDevice1 +

IDXGIDevice2

ID3D10Multithread

ID3D10Device

ID3D10Device1 ou

ID3D10Device

ID3D10Device

ID3D10Device1

IDXGIDevice +

IDXGIDevice1

ID3D10Multithread

ID3D11Device

ID3D11DeviceContext (tel que publié par le contexte immédiat. L’interface émulée Direct3D 10 ou Microsoft Direct3D 10.1 n’a aucun effet sur les contextes différés.)

 

Le tableau suivant montre les méthodes de contexte immédiates que le runtime désactive lorsque les objets d’état de contexte indiqués sont actifs.

Méthodes d’ID3D11DeviceContext quand __uuidof(ID3D10Device1) ou __uuidof(ID3D10Device) est actif Méthodes d’ID3D10Device quand __uuidof(ID3D11Device) est actif

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

Dessin

Dessin

DrawAuto

DrawAuto

DrawIndexed

DrawIndexed

DrawIndexedInstanced

DrawIndexedInstanced

DrawIndexedInstancedIndirect

DrawInstanced

DrawInstanced

DrawInstancedIndirect

DSGetConstantBuffers

DSGetSamplers

DSGetShader

DSGetShaderResources

DSSetConstantBuffers

DSSetSamplers

DSSetShader

DSSetShaderResources

ExecuteCommandList

FinishCommandList

Purge

Purge

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

 

Le tableau suivant montre les méthodes de contexte immédiates que le runtime ne désactive pas lorsque les objets d’état de contexte indiqués sont actifs.

Méthodes d’ID3D11DeviceContext quand __uuidof(ID3D10Device1) ou __uuidof(ID3D10Device) est actif Méthodes d’ID3D10Device quand __uuidof(ID3D11Device) est actif

Début

End

GetCreationFlags

GetPrivateData

GetContextFlags

GetData

Map

Unmap

 

Le tableau suivant présente les méthodes d’interface ID3D10Device que le runtime ne désactive pas, car il ne s’agit pas de méthodes contextuelles immédiates.

Méthodes d’ID3D10Device

CheckCounter

CheckCounterInfo

Create*, comme CreateQuery

GetDeviceRemovedReason

GetExceptionMode

OpenSharedResource

SetExceptionMode

SetPrivateData

SetPrivateDataInterface

 

Windows Phone 8 : Cette API est prise en charge.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 et mise à jour de plateforme pour Windows Server 2008 R2 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête d3d11_1.h
Bibliothèque D3D11.lib

Voir aussi

ID3D11Device1