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

Crea un objeto de estado de contexto que contiene todo el estado de Microsoft Direct3D y algún comportamiento de Direct3D.

Sintaxis

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

Combinación de D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG valores que se combinan mediante una operación OR bit a bit. El valor resultante especifica cómo crear el objeto de estado de contexto. La marca D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED es actualmente la única marca definida. Si el dispositivo original se creó con D3D11_CREATE_DEVICE_SINGLETHREADED, debe crear todos los objetos de estado de contexto a partir de ese dispositivo con la marca D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED .

Si establece la marca de un solo subproceso para el objeto de estado de contexto y el dispositivo, se garantiza que llamará a todo el conjunto de métodos de contexto y métodos de dispositivo solo desde un subproceso. Por lo tanto, no es necesario usar secciones críticas para sincronizar el acceso al contexto del dispositivo y el tiempo de ejecución puede evitar trabajar con esas secciones críticas intensivas del procesador.

[in] pFeatureLevels

Tipo: const D3D_FEATURE_LEVEL*

Puntero a una matriz de valores D3D_FEATURE_LEVEL . La matriz puede contener elementos de la lista siguiente y determina el orden de los niveles de características para los que se intenta crear. A diferencia de D3D11CreateDevice, no se puede establecer pFeatureLevels en NULL porque no hay ninguna matriz de nivel de característica predeterminada.

{
    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

Número de elementos de pFeatureLevels. A diferencia de D3D11CreateDevice, debe establecer FeatureLevels en mayor que 0 porque no se puede establecer pFeatureLevels en NULL.

SDKVersion

Tipo: UINT

La versión del SDK. Debe establecer este parámetro en D3D11_SDK_VERSION.

EmulatedInterface

Tipo: REFIID

Identificador único global (GUID) de la interfaz emulada. Este valor especifica el comportamiento del dispositivo cuando el objeto de estado de contexto está activo. Los valores válidos se obtienen mediante el operador __uuidof en las interfaces ID3D10Device, ID3D10Device1, ID3D11Device e ID3D11Device1 . Vea la sección Comentarios.

[out, optional] pChosenFeatureLevel

Tipo: D3D_FEATURE_LEVEL*

Puntero a una variable que recibe un valor de D3D_FEATURE_LEVEL de la matriz pFeatureLevels . Este es el primer valor de matriz con el que CreateDeviceContextState se creó correctamente en la creación del objeto de estado de contexto. Si se produce un error en la llamada a CreateDeviceContextState , la variable a la que apunta pChosenFeatureLevel se establece en cero.

[out, optional] ppContextState

Tipo: ID3DDeviceContextState**

Dirección de un puntero a un objeto ID3DDeviceContextState que representa el estado de un dispositivo Direct3D.

Valor devuelto

Tipo: HRESULT

Este método devuelve uno de los códigos de retorno de Direct3D 11.

Comentarios

El valor REFIID de la interfaz emulada es un GUID obtenido mediante el uso del operador __uuidof . Por ejemplo, __uuidof(ID3D11Device) obtiene el GUID de la interfaz en un dispositivo Microsoft Direct3D 11.

Llame al método ID3D11DeviceContext1::SwapDeviceContextState para activar el objeto de estado de contexto. Cuando el objeto de estado de contexto está activo, los comportamientos del dispositivo asociados con el nivel de característica del objeto de estado de contexto y su interfaz compatible se activan en el dispositivo Direct3D hasta la siguiente llamada a SwapDeviceContextState.

Cuando un objeto de estado de contexto está activo, el tiempo de ejecución deshabilita determinados métodos en las interfaces de dispositivo y contexto. Por ejemplo, un objeto de estado de contexto creado con __uuidof(ID3D11Device) hará que el tiempo de ejecución desactive la mayoría de las interfaces de dispositivo de Microsoft Direct3D 10 y un objeto de estado de contexto creado con __uuidof(ID3D10Device1) o __uuidof(ID3D10Device) hará que el tiempo de ejecución desactive la mayoría de los métodos ID3D11DeviceContext . Este comportamiento garantiza que un usuario de cualquiera de las interfaces emuladas no pueda establecer el estado del dispositivo que la otra interfaz emulada no pueda expresar. Esta restricción ayuda a garantizar que la interfaz emulada ID3D10Device1 refleje con precisión el estado completo de la canalización y que la interfaz emulada no funcionará contrariamente a su definición de interfaz original.

Por ejemplo, supongamos que la fase de teselación se activa a través de la interfaz ID3D11DeviceContext al crear el dispositivo a través de D3D11CreateDevice o D3D11CreateDeviceAndSwapChain, en lugar de a través de los equivalentes de Direct3D 10. Dado que el contexto de Direct3D 11 está activo, una interfaz de Direct3D 10 está inactiva cuando se recupera por primera vez a través de QueryInterface. Esto significa que no puedes pasar inmediatamente una interfaz de Direct3D 10 que recuperaste de un dispositivo Direct3D 11 a una función. Primero debes llamar a SwapDeviceContextState para activar un objeto de estado de contexto compatible con Direct3D 10.

En la tabla siguiente se muestran los métodos que están activos e inactivos para cada interfaz emulada.

Interfaz emulada Interfaces de contexto de dispositivo activo o inmediato Interfaces de contexto de dispositivo inactivas o inmediatas

ID3D11Device o

ID3D11Device1

ID3D11Device

IDXGIDevice +

IDXGIDevice1 +

IDXGIDevice2

ID3D10Multithread

ID3D10Dispositivo

ID3D10Device1 o

ID3D10Dispositivo

ID3D10Dispositivo

ID3D10Device1

IDXGIDevice +

IDXGIDevice1

ID3D10Multithread

ID3D11Device

ID3D11DeviceContext (tal como lo publica el contexto inmediato. La interfaz emulada direct3D 10.1 o Direct3D 10.1 no tiene ningún efecto en los contextos diferidos).

 

En la tabla siguiente se muestran los métodos de contexto inmediatos que el tiempo de ejecución deshabilita cuando los objetos de estado de contexto indicados están activos.

Métodos de ID3D11DeviceContext cuando __uuidof(ID3D10Device1) o __uuidof(ID3D10Device) está activo Métodos de ID3D10Device cuando __uuidof(ID3D11Device) está activo

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

Dibujar

Dibujar

DrawAuto

DrawAuto

DrawIndexed

DrawIndexed

DrawIndexedInstanced

DrawIndexedInstanced

DrawIndexedInstancedIndirect

DrawInstanced

DrawInstanced

DrawInstancedIndirect

DSGetConstantBuffers

DSGetSamplers

DSGetShader

DSGetShaderResources

DSSetConstantBuffers

DSSetSamplers

DSSetShader

DSSetShaderResources

ExecuteCommandList

FinishCommandList

Vaciar

Vaciar

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

RSGetScisorRects

RSGetScisorRects

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

 

En la tabla siguiente se muestran los métodos de contexto inmediatos que el tiempo de ejecución no deshabilita cuando los objetos de estado de contexto indicados están activos.

Métodos de ID3D11DeviceContext cuando __uuidof(ID3D10Device1) o __uuidof(ID3D10Device) está activo Métodos de ID3D10Device cuando __uuidof(ID3D11Device) está activo

Comenzar

Fin

GetCreationFlags

GetPrivateData

GetContextFlags

GetData

Map

Unmap

 

En la tabla siguiente se muestran los métodos de interfaz ID3D10Device que el runtime no deshabilita porque no son métodos de contexto inmediatos.

Métodos de ID3D10Device

CheckCounter

CheckCounterInfo

Crear*, como CreateQuery

GetDeviceRemovedReason

GetExceptionMode

OpenSharedResource

SetExceptionMode

SetPrivateData

SetPrivateDataInterface

 

Windows Phone 8: se admite esta API.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 y Actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 y actualización de plataforma para Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado d3d11_1.h
Library D3D11.lib

Consulte también

ID3D11Device1