다음을 통해 공유


ID3D11Device1::CreateDeviceContextState 메서드(d3d11_1.h)

모든 Microsoft Direct3D 상태와 일부 Direct3D 동작을 보유하는 컨텍스트 상태 개체를 만듭니다.

구문

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

매개 변수

Flags

형식: UINT

비트 OR 연산을 사용하여 결합된 D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG 값의 조합입니다. 결과 값은 컨텍스트 상태 개체를 만드는 방법을 지정합니다. D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED 플래그는 현재 정의된 유일한 플래그입니다. D3D11_CREATE_DEVICE_SINGLETHREADED 사용하여 원래 디바이스를 만든 경우 D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED플래그를 사용하여 해당 디바이스의 모든 컨텍스트 상태 개체를 만들어야 합니다.

컨텍스트 상태 개체와 디바이스 모두에 대해 단일 스레드 플래그를 설정하는 경우 하나의 스레드에서만 컨텍스트 메서드 및 디바이스 메서드의 전체 집합을 호출하도록 보장합니다. 따라서 중요한 섹션을 사용하여 디바이스 컨텍스트에 대한 액세스를 동기화할 필요가 없으며 런타임은 프로세서를 많이 사용하는 중요한 섹션으로 작업하지 않을 수 있습니다.

[in] pFeatureLevels

형식: const D3D_FEATURE_LEVEL*

D3D_FEATURE_LEVEL 값 배열에 대한 포인터입니다. 배열은 다음 목록의 요소를 포함할 수 있으며 생성이 시도되는 기능 수준의 순서를 결정합니다. D3D11CreateDevice와 달리 기본 기능 수준 배열이 없으므로 pFeatureLevelsNULL로 설정할 수 없습니다.

{
    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

형식: UINT

pFeatureLevels의 요소 수입니다. D3D11CreateDevice와 달리 pFeatureLevelsNULL로 설정할 수 없으므로 FeatureLevels를 0보다 크게 설정해야 합니다.

SDKVersion

형식: UINT

SDK 버전입니다. 이 매개 변수를 D3D11_SDK_VERSION 설정해야 합니다.

EmulatedInterface

형식: REFIID

에뮬레이트된 인터페이스의 GUID(Globally Unique Identifier)입니다. 이 값은 컨텍스트 상태 개체가 활성 상태일 때 디바이스의 동작을 지정합니다. 유효한 값은 ID3D10Device, ID3D10Device1, ID3D11DeviceID3D11Device1 인터페이스에서 __uuidof 연산자를 사용하여 가져옵니다. 설명 부분을 참조하세요.

[out, optional] pChosenFeatureLevel

형식: D3D_FEATURE_LEVEL*

pFeatureLevels 배열에서 D3D_FEATURE_LEVEL 값을 받는 변수에 대한 포인터입니다. 이 값은 CreateDeviceContextState 가 컨텍스트 상태 개체를 만드는 데 성공한 첫 번째 배열 값입니다. CreateDeviceContextState에 대한 호출이 실패하면 pChosenFeatureLevel이 가리키는 변수가 0으로 설정됩니다.

[out, optional] ppContextState

형식: ID3DDeviceContextState**

Direct3D 디바이스의 상태를 나타내는 ID3DDeviceContextState 개체에 대한 포인터의 주소입니다.

반환 값

형식: HRESULT

이 메서드는 Direct3D 11 반환 코드 중 하나를 반환합니다.

설명

에뮬레이트된 인터페이스의 REFIID 값은 __uuidof 연산자를 사용하여 가져온 GUID입니다. 예를 들어 는 __uuidof(ID3D11Device) Microsoft Direct3D 11 디바이스에 대한 인터페이스의 GUID를 가져옵니다.

ID3D11DeviceContext1::SwapDeviceContextState 메서드를 호출하여 컨텍스트 상태 개체를 활성화합니다. 컨텍스트 상태 개체가 활성 상태이면 컨텍스트 상태 개체의 기능 수준 및 호환되는 인터페이스와 연결된 디바이스 동작은 SwapDeviceContextState에 대한 다음 호출까지 Direct3D 디바이스에서 활성화됩니다.

컨텍스트 상태 개체가 활성 상태이면 런타임은 디바이스 및 컨텍스트 인터페이스에서 특정 메서드를 사용하지 않도록 설정합니다. 예를 들어 을 사용하여 만든 __uuidof(ID3D11Device) 컨텍스트 상태 개체는 런타임이 대부분의 Microsoft Direct3D 10 디바이스 인터페이스를 끄게 하고, 또는 __uuidof(ID3D10Device) 를 사용하여 만든 __uuidof(ID3D10Device1) 컨텍스트 상태 개체로 인해 런타임이 대부분의 ID3D11DeviceContext 메서드를 해제하게 됩니다. 이 동작은 에뮬레이트된 인터페이스의 사용자가 다른 에뮬레이트된 인터페이스가 표현할 수 없는 디바이스 상태를 설정할 수 없도록 합니다. 이 제한은 ID3D10Device1 에뮬레이트된 인터페이스가 파이프라인의 전체 상태를 정확하게 반영하고 에뮬레이트된 인터페이스가 원래 인터페이스 정의와 반대로 작동하지 않도록 보장하는 데 도움이 됩니다.

예를 들어 Direct3D 10 등가물 대신 D3D11CreateDevice 또는 D3D11CreateDeviceAndSwapChain 을 통해 디바이스를 만들 때 ID3D11DeviceContext 인터페이스를 통해 테셀레이션 단계가 활성화되어 있다고 가정합니다. Direct3D 11 컨텍스트가 활성화되어 있으므로 QueryInterface를 통해 처음 검색할 때 Direct3D 10 인터페이스가 비활성 상태입니다. 즉, Direct3D 11 디바이스에서 검색한 Direct3D 10 인터페이스를 함수에 즉시 전달할 수 없습니다. Direct3D 10 호환 컨텍스트 상태 개체를 활성화하려면 먼저 SwapDeviceContextState 를 호출해야 합니다.

다음 표에서는 각 에뮬레이트된 인터페이스에 대해 활성 및 비활성 메서드를 보여 줍니다.

에뮬레이트된 인터페이스 활성 디바이스 또는 직접 컨텍스트 인터페이스 비활성 디바이스 또는 직접 컨텍스트 인터페이스

ID3D11디바이스 또는

ID3D11Device1

ID3D11Device

IDXGIDevice +

IDXGIDevice1 +

IDXGIDevice2

ID3D10Multithread

ID3D10Device

ID3D10Device1 또는

ID3D10Device

ID3D10Device

ID3D10Device1

IDXGIDevice +

IDXGIDevice1

ID3D10Multithread

ID3D11Device

ID3D11DeviceContext (직접 컨텍스트에서 게시한 대로) Direct3D 10 또는 Microsoft Direct3D 10.1 에뮬레이트된 인터페이스는 지연된 컨텍스트에 영향을 주지 않습니다.)

 

다음 표에서는 표시된 컨텍스트 상태 개체가 활성 상태일 때 런타임에서 사용하지 않도록 설정하는 바로 가기 컨텍스트 메서드를 보여 줍니다.

또는 __uuidof(ID3D10Device) 가 활성 상태인 경우 ID3D11DeviceContext__uuidof(ID3D10Device1) 의 메서드 가 활성 상태인 경우 __uuidof(ID3D11Device)ID3D10Device의 메서드

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

그리기

그리기

DrawAuto

DrawAuto

DrawIndexed

DrawIndexed

DrawIndexedInstanced

DrawIndexedInstanced

DrawIndexedInstancedIndirect

DrawInstanced

DrawInstanced

DrawInstancedIndirect

DSGetConstantBuffers

DSGetSamplers

DSGetShader

DSGetShaderResources

DSSetConstantBuffers

DSSetSamplers

DSSetShader

DSSetShaderResources

ExecuteCommandList

FinishCommandList

플러시

플러시

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

 

다음 표에서는 표시된 컨텍스트 상태 개체가 활성 상태일 때 런타임에서 사용하지 않도록 설정하지 않는 바로 가기 컨텍스트 메서드를 보여 줍니다.

또는 __uuidof(ID3D10Device) 가 활성 상태인 경우 ID3D11DeviceContext__uuidof(ID3D10Device1) 의 메서드 가 활성 상태인 경우 __uuidof(ID3D11Device)ID3D10Device의 메서드

시작

End

GetCreationFlags

GetPrivateData

GetContextFlags

GetData

Map

Unmap

 

다음 표에서는 런타임이 즉각적인 컨텍스트 메서드가 아니므로 사용하지 않도록 설정하지 않는 ID3D10Device 인터페이스 메서드를 보여 줍니다.

ID3D10Device의 메서드

CheckCounter

CheckCounterInfo

CreateQuery와 같은 Create*

GetDeviceRemovedReason

GetExceptionMode

OpenSharedResource

SetExceptionMode

SetPrivateData

SetPrivateDataInterface

 

Windows Phone 8: 이 API가 지원됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2용 Windows Server 2012 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d3d11_1.h
라이브러리 D3D11.lib

추가 정보

ID3D11Device1