D3D基本上是一个状态机。其中的事物都会停留在当前的状态,直到我们去改变他们。例如我们之前看到的,输入布局,顶点缓冲区,索引缓冲区在绑定到输入装备阶段后驻留在那,直到我们绑定其他的缓冲;同样地,当前设置的图元拓扑在它被改变之前一直都生效。另外,D3D具有状态组,可以封装用来配置D3D的设置。
1.ID3D11RasterizerState:该接口表示用于配置光栅化阶段的状态组。
2.ID3D11BlendState:该接口表示配置混合操作的状态组。默认设置中,混合是禁用的,所以暂时不用管它。
3.ID3D11DepthStencilState:该接口表示用于配置深度和模版的状态组。默认设置中,模版是禁用的,所以暂时不用管它。默认的深度测试设置是标准深度测试。
目前,我们唯一关注的状态块接口是ID3D11RasterizerState接口。我们可以通过填写一个D3D11_RASTERIZER_DESC结构体来创建一个该类型的接口并调用它。
HRESULT ID3D11Device::CreateRasterizerState(
const D3D11_RASTERIZER_DESC *pRasterizerDesc,
ID3D11RasterizerState **ppRasterizerState);
第一个参数是D3D11_RASTERIZER_DESC的指针,用于描述创建的光栅化状态块。第二个参数用于返回一个已创建好的ID3D11Rasteriz