Share via


방법: 명령 목록 기록

명령 목록은 렌더링 명령의 기록된 목록입니다. 이 항목에서는 명령 목록을 만들고 기록하는 방법을 보여줍니다. 명령 목록을 사용하여 렌더링 명령을 기록하고 나중에 다시 재생합니다. 명령 목록은 스레드 간에 렌더링 작업을 분할하는 데 편리합니다.

명령 목록을 기록하려면

  1. 디바이스 상태 및 렌더링 작업을 포함하는 지연된 컨텍스트에서 명령 목록을 만들어야 합니다. 디바이스가 지정된 경우 ID3D11Device::CreateDeferredContext를 호출하여 지연된 컨텍스트를 만듭니다.

    HRESULT hr;
    ID3D11DeviceContext* pDeferredContext = NULL;
    
    hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
    
  2. 지연된 컨텍스트를 사용하여 렌더링합니다.

    float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f };
    pDeferredContext->ClearRenderTargetView( g_pRenderTargetView, ClearColor );
    
    // Add additional rendering commands
    ...
    

    이 간단한 예제에서는 렌더링 대상을 지우지만 렌더링 명령을 추가할 수 있습니다.

  3. ID3D11DeviceContext::FinishCommandList를 호출하고 초기화되지 않은 ID3D11CommandList 인터페이스에 포인터를 전달하여 명령 목록을 만들거나 기록합니다.

    ID3D11CommandList* pd3dCommandList = NULL;
    HRESULT hr;
    hr = pDeferredContext->FinishCommandList(FALSE, &pd3dCommandList);
    

    메서드가 반환되면 모든 렌더링 명령을 포함하는 명령 목록이 만들어지고 인터페이스가 애플리케이션에 반환됩니다.

    부울 매개 변수는 지연된 컨텍스트에서 파이프라인 상태로 수행할 작업을 런타임에 알려줍니다. TRUE 는 기록이 완료된 경우 디바이스 컨텍스트의 상태를 명령 전 목록 조건으로 복원하는 것을 의미하며, FALSE 는 녹화 후 상태를 변경하지 않음을 의미합니다. 즉, 디바이스 컨텍스트는 명령 목록에 포함된 상태 변경 내용을 반영합니다.

명령 목록을 재생하기 위한 예제를 보려면 방법: 명령 목록 재생을 참조하세요.

명령 목록

Direct3D 11을 사용하는 방법