Sdílet prostřednictvím


Použití techniky (Direct3D 11)

Když jsou konstanty, textury a stav shaderu deklarované a inicializované, jedinou věcí, kterou zbývá udělat, je nastavit stav efektu v zařízení.

Nastavit nestínící stav zařízení

Některé stavy potrubí nejsou nastaveny efektem. Například vymazání cílové plochy vykreslování připraví tuto plochu na zpracování dat. Než nastavíte stav efektu v zařízení, tady je příklad vymazání výstupních vyrovnávacích pamětí.

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

Nastavení stavu efektu v zařízení

Nastavení stavu efektu se provádí aplikováním tohoto stavu efektu v rámci vykreslovací smyčky. To se provádí zvenku dovnitř. To znamená, že vyberte techniku a pak nastavte stav pro každý průchod (v závislosti na požadovaném výsledku).

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

Efekt nic nevykreslí, jednoduše nastaví stav efektu na zařízení. Kód vykreslování se volá poté, co stav efektu aktualizuje stav zařízení. Volání DrawIndexed provede v tomto příkladu vykreslování.

Vykreslení Efektu (Direct3D 11)