방법: 명령 목록 기록
명령 목록은 렌더링 명령의 기록된 목록입니다. 이 항목에서는 명령 목록을 만들고 기록하는 방법을 보여줍니다. 명령 목록을 사용하여 렌더링 명령을 기록하고 나중에 다시 재생합니다. 명령 목록은 스레드 간에 렌더링 작업을 분할하는 데 편리합니다.
명령 목록을 기록하려면
디바이스 상태 및 렌더링 작업을 포함하는 지연된 컨텍스트에서 명령 목록을 만들어야 합니다. 디바이스가 지정된 경우 ID3D11Device::CreateDeferredContext를 호출하여 지연된 컨텍스트를 만듭니다.
HRESULT hr; ID3D11DeviceContext* pDeferredContext = NULL; hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
지연된 컨텍스트를 사용하여 렌더링합니다.
float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; pDeferredContext->ClearRenderTargetView( g_pRenderTargetView, ClearColor ); // Add additional rendering commands ...
이 간단한 예제에서는 렌더링 대상을 지우지만 렌더링 명령을 추가할 수 있습니다.
ID3D11DeviceContext::FinishCommandList를 호출하고 초기화되지 않은 ID3D11CommandList 인터페이스에 포인터를 전달하여 명령 목록을 만들거나 기록합니다.
ID3D11CommandList* pd3dCommandList = NULL; HRESULT hr; hr = pDeferredContext->FinishCommandList(FALSE, &pd3dCommandList);
메서드가 반환되면 모든 렌더링 명령을 포함하는 명령 목록이 만들어지고 인터페이스가 애플리케이션에 반환됩니다.
부울 매개 변수는 지연된 컨텍스트에서 파이프라인 상태로 수행할 작업을 런타임에 알려줍니다. TRUE 는 기록이 완료된 경우 디바이스 컨텍스트의 상태를 명령 전 목록 조건으로 복원하는 것을 의미하며, FALSE 는 녹화 후 상태를 변경하지 않음을 의미합니다. 즉, 디바이스 컨텍스트는 명령 목록에 포함된 상태 변경 내용을 반영합니다.
명령 목록을 재생하기 위한 예제를 보려면 방법: 명령 목록 재생을 참조하세요.
관련 항목