Cara: Merekam Daftar Perintah

Daftar perintah adalah daftar perintah penyajian yang direkam. Topik ini memperlihatkan cara membuat dan merekam daftar perintah. Gunakan daftar perintah untuk merekam perintah render dan memutarnya kembali nanti. Daftar perintah mudah untuk memisahkan tugas penyajian di antara utas.

Untuk merekam daftar perintah

  1. Daftar perintah harus dibuat dari konteks yang ditangguhkan, yang berisi status perangkat dan tindakan penyajian. Mengingat perangkat, buat konteks yang ditangguhkan dengan memanggil ID3D11Device::CreateDeferredContext.

    HRESULT hr;
    ID3D11DeviceContext* pDeferredContext = NULL;
    
    hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
    
  2. Gunakan konteks yang ditangguhkan untuk dirender.

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

    Contoh sederhana ini menghapus target render, tetapi Anda dapat menambahkan perintah render tambahan.

  3. Buat/rekam daftar perintah dengan memanggil ID3D11DeviceContext::FinishCommandList dan meneruskan pointer ke antarmuka ID3D11CommandList yang tidak diinisialisasi.

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

    Ketika metode kembali, daftar perintah dibuat yang berisi semua perintah render dan antarmuka dikembalikan ke aplikasi.

    Parameter boolean memberi tahu runtime apa yang harus dilakukan dengan status alur dalam konteks yang ditangguhkan. TRUE berarti memulihkan status konteks perangkat ke kondisi daftar pra-perintahnya saat perekaman selesai, FALSE berarti tidak mengubah status setelah perekaman. Ini berarti bahwa konteks perangkat akan mencerminkan perubahan status yang terkandung dalam daftar perintah.

Untuk melihat contoh pemutaran kembali daftar perintah, lihat Cara: Memutar Kembali Daftar Perintah.

Daftar Perintah

Cara Menggunakan Direct3D 11