Compartilhar via


Método ID3D11Device1::CreateDeviceContextState (d3d11_1.h)

Cria um objeto de estado de contexto que contém todo o estado do Microsoft Direct3D e algum comportamento Direct3D.

Sintaxe

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

Parâmetros

Flags

Tipo: UINT

Uma combinação de valores D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG que são combinados usando uma operação OR bit a bit. O valor resultante especifica como criar o objeto de estado de contexto. O sinalizador D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED atualmente é o único sinalizador definido. Se o dispositivo original tiver sido criado com D3D11_CREATE_DEVICE_SINGLETHREADED, você deverá criar todos os objetos de estado de contexto desse dispositivo com o sinalizador D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED .

Se você definir o sinalizador de thread único para o objeto de estado de contexto e o dispositivo, você garantirá que chamará todo o conjunto de métodos de contexto e métodos de dispositivo apenas de um thread. Portanto, você não precisa usar seções críticas para sincronizar o acesso ao contexto do dispositivo e o runtime pode evitar trabalhar com essas seções críticas com uso intensivo de processador.

[in] pFeatureLevels

Tipo: const D3D_FEATURE_LEVEL*

Um ponteiro para uma matriz de valores D3D_FEATURE_LEVEL . A matriz pode conter elementos da lista a seguir e determina a ordem dos níveis de recursos para os quais a criação é tentada. Ao contrário de D3D11CreateDevice, você não pode definir pFeatureLevels como NULL porque não há nenhuma matriz de nível de recurso padrão.

{
    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

O número de elementos em pFeatureLevels. Ao contrário de D3D11CreateDevice, você deve definir FeatureLevels como maior que 0 porque não é possível definir pFeatureLevels como NULL.

SDKVersion

Tipo: UINT

A versão do SDK. Você deve definir esse parâmetro como D3D11_SDK_VERSION.

EmulatedInterface

Tipo: REFIID

O GUID (identificador global exclusivo) para a interface emulada. Esse valor especifica o comportamento do dispositivo quando o objeto de estado de contexto está ativo. Os valores válidos são obtidos usando o operador __uuidof nas interfaces ID3D10Device, ID3D10Device1, ID3D11Device e ID3D11Device1 . Consulte Observações.

[out, optional] pChosenFeatureLevel

Tipo: D3D_FEATURE_LEVEL*

Um ponteiro para uma variável que recebe um valor D3D_FEATURE_LEVEL da matriz pFeatureLevels . Esse é o primeiro valor de matriz com o qual CreateDeviceContextState conseguiu criar o objeto de estado de contexto. Se a chamada para CreateDeviceContextState falhar, a variável apontada por pChosenFeatureLevel será definida como zero.

[out, optional] ppContextState

Tipo: ID3DDeviceContextState**

O endereço de um ponteiro para um objeto ID3DDeviceContextState que representa o estado de um dispositivo Direct3D.

Retornar valor

Tipo: HRESULT

Esse método retorna um dos códigos de retorno do Direct3D 11.

Comentários

O valor REFIID da interface emulada é um GUID obtido pelo uso do operador __uuidof . Por exemplo, __uuidof(ID3D11Device) obtém o GUID da interface para um dispositivo Microsoft Direct3D 11.

Chame o método ID3D11DeviceContext1::SwapDeviceContextState para ativar o objeto de estado de contexto. Quando o objeto de estado de contexto está ativo, os comportamentos do dispositivo associados ao nível de recurso do objeto de estado de contexto e sua interface compatível são ativados no dispositivo Direct3D até a próxima chamada para SwapDeviceContextState.

Quando um objeto de estado de contexto está ativo, o runtime desabilita determinados métodos no dispositivo e nas interfaces de contexto. Por exemplo, um objeto de estado de contexto criado com fará com __uuidof(ID3D11Device) que o runtime desative a maioria das interfaces de dispositivo do Microsoft Direct3D 10 e um objeto de estado de contexto criado com ou __uuidof(ID3D10Device) fará com __uuidof(ID3D10Device1) que o runtime desative a maioria dos métodos ID3D11DeviceContext. Esse comportamento garante que um usuário de uma interface emulada não possa definir o estado do dispositivo que a outra interface emulada não possa expressar. Essa restrição ajuda a garantir que a interface emulada ID3D10Device1 reflita com precisão o estado completo do pipeline e que a interface emulada não funcionará de forma contrária à sua definição de interface original.

Por exemplo, suponha que o estágio de mosaico seja ativado por meio da interface ID3D11DeviceContext ao criar o dispositivo por meio de D3D11CreateDevice ou D3D11CreateDeviceAndSwapChain, em vez de por meio dos equivalentes do Direct3D 10. Como o contexto do Direct3D 11 está ativo, uma interface do Direct3D 10 fica inativa quando você a recupera pela primeira vez por meio de QueryInterface. Isso significa que você não pode passar imediatamente uma interface direct3D 10 que você recuperou de um dispositivo Direct3D 11 para uma função. Primeiro, você deve chamar SwapDeviceContextState para ativar um objeto de estado de contexto compatível com Direct3D 10.

A tabela a seguir mostra os métodos ativos e inativos para cada interface emulada.

Interface emulada Dispositivo ativo ou interfaces de contexto imediatas Dispositivo inativo ou interfaces de contexto imediatas

ID3D11Device ou

ID3D11Device1

ID3D11Device

IDXGIDevice +

IDXGIDevice1 +

IDXGIDevice2

ID3D10Multithread

ID3D10Device

ID3D10Device1 ou

ID3D10Device

ID3D10Device

ID3D10Device1

IDXGIDevice +

IDXGIDevice1

ID3D10Multithread

ID3D11Device

ID3D11DeviceContext (conforme publicado pelo contexto imediato. A interface emulada direct3D 10 ou Microsoft Direct3D 10.1 não tem efeito sobre contextos adiados.)

 

A tabela a seguir mostra os métodos de contexto imediatos que o runtime desabilita quando os objetos de estado de contexto indicados estão ativos.

Métodos de ID3D11DeviceContext quando __uuidof(ID3D10Device1) ou __uuidof(ID3D10Device) está ativo Métodos de ID3D10Device quando __uuidof(ID3D11Device) está ativo

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

Draw

Draw

DrawAuto

DrawAuto

DrawIndexed

DrawIndexed

DrawIndexedInstanced

DrawIndexedInstanced

DrawIndexedInstancedIndirect

DrawInstanced

DrawInstanced

DrawInstancedIndirect

DSGetConstantBuffers

DSGetSamplers

DSGetShader

DSGetShaderResources

DSSetConstantBuffers

DSSetSamplers

DSSetShader

DSSetShaderResources

ExecuteCommandList

FinishCommandList

Liberar

Liberar

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

 

A tabela a seguir mostra os métodos de contexto imediatos que o runtime não desabilita quando os objetos de estado de contexto indicados estão ativos.

Métodos de ID3D11DeviceContext quando __uuidof(ID3D10Device1) ou __uuidof(ID3D10Device) está ativo Métodos de ID3D10Device quando __uuidof(ID3D11Device) está ativo

Começar

End

GetCreationFlags

GetPrivateData

GetContextFlags

GetData

Map

Desmapear

 

A tabela a seguir mostra os métodos de interface ID3D10Device que o runtime não desabilita porque não são métodos de contexto imediatos.

Métodos de ID3D10Device

CheckCounter

CheckCounterInfo

Create*, como CreateQuery

GetDeviceRemovedReason

GetExceptionMode

OpenSharedResource

SetExceptionMode

SetPrivateData

SetPrivateDataInterface

 

Windows Phone 8: há suporte para essa API.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 e Atualização de Plataforma para Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho d3d11_1.h
Biblioteca D3D11.lib

Confira também

ID3D11Device1