Bagikan melalui


Menerapkan Teknik (Direct3D 11)

Dengan konstanta, tekstur, dan status shader yang dideklarasikan dan diinisialisasi, satu-satunya hal yang tersisa untuk dilakukan adalah mengatur status efek di perangkat.

Mengatur Status Non-Shader di Perangkat

Beberapa status alur tidak diatur oleh efek. Misalnya menghapus target render menyiapkan target render untuk data. Sebelum mengatur status efek di perangkat, berikut adalah contoh menghapus buffer output.

    // Clear the render target and depth stencil
    float ClearColor[4] = { 0.0f, 0.25f, 0.25f, 0.55f };
    ID3D11RenderTargetView* pRTV = DXUTGetD3D11RenderTargetView();
    pD3DDevice->ClearRenderTargetView( pRTV, ClearColor );
    ID3D11DepthStencilView* pDSV = DXUTGetD3D11DepthStencilView();
    pD3DDevice->ClearDepthStencilView( pDSV, D3D11_CLEAR_DEPTH, 1.0, 0 );

Mengatur Status Efek di Perangkat

Mengatur status efek dilakukan dengan menerapkan status efek dalam perulangan render. Ini dilakukan dari luar masuk Artinya, pilih teknik, lalu atur status untuk setiap pass (tergantung pada hasil yang Anda inginkan).

    D3D11_TECHNIQUE_DESC techDesc;
    pRenderTechnique->GetDesc( &techDesc );
    for( UINT p = 0; p < techDesc.Passes; ++p )
    {
        }
            ....
            pRenderTechnique->GetPassByIndex( p )->Apply(0);
            pd3dDevice->DrawIndexed( (UINT)pSubset->IndexCount, 0,  
                 (UINT)pSubset->VertexStart );
        }
    }

Efek tidak merender apa pun, hanya mengatur status efek ke perangkat. Kode penyajian dipanggil setelah status efek memperbarui status perangkat. Dalam contoh ini, panggilan DrawIndexed melakukan penyajian.

Merender Efek (Direct3D 11)