(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 调用执行呈现。
相关主题