기술 적용(Direct3D 10)
상수, 텍스처 및 셰이더 상태가 선언되고 초기화되면 디바이스에서 효과 상태를 설정하는 것만 남았습니다.
디바이스에서 비 셰이더 상태 설정
일부 파이프라인 상태는 효과에 의해 설정되지 않습니다. 예를 들어 렌더링 대상을 지우면 데이터에 대한 렌더링 대상이 준비됩니다. 디바이스에서 효과 상태를 설정하기 전에 출력 버퍼를 지우는 예제는 다음과 같습니다.
// Clear the render target and depth stencil
float ClearColor[4] = { 0.0f, 0.25f, 0.25f, 0.55f };
ID3D10RenderTargetView* pRTV = DXUTGetD3D10RenderTargetView();
pd3dDevice->ClearRenderTargetView( pRTV, ClearColor );
ID3D10DepthStencilView* pDSV = DXUTGetD3D10DepthStencilView();
pd3dDevice->ClearDepthStencilView( pDSV, D3D10_CLEAR_DEPTH, 1.0, 0 );
디바이스에서 효과 상태 설정
효과 상태 설정은 렌더링 루프 내에서 효과 상태를 적용하여 수행됩니다. 이 작업은 외부에서 수행됩니다. 즉, 기술을 선택한 다음 각 패스의 상태를 설정합니다(원하는 결과에 따라 다름).
D3D10_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 );
}
}
효과는 아무것도 렌더링하지 않으며 단순히 효과 상태를 디바이스로 설정합니다. 렌더링 코드는 효과 상태가 디바이스 상태를 업데이트한 후에 호출됩니다. 이 예제에서 DrawIndexed 호출은 렌더링을 수행합니다.
관련 항목