Может показаться, что API-интерфейс D3D11 немного неуклюж, или я не правильно его использую.
Правда ли, что это минимальный набор шагов для изменения состояния одного растеризатора в D3D11 (Iв качестве примера использую переход в режим каркасного рендеринга)
// variables to hold the current rasterizer state and its description
ID3D11RasterizerState * rState ;
D3D11_RASTERIZER_DESC rDesc ;
// cd3d is the ID3D11DeviceContext
cd3d->RSGetState( &rState ) ; // retrieve the current state
rState->GetDesc( &rDesc ) ; // get the desc of the state
rDesc.FillMode = D3D11_FILL_WIREFRAME ; // change the ONE setting
// create a whole new rasterizer state
// d3d is the ID3D11Device
d3d->CreateRasterizerState( &rDesc, &rState ) ;
cd3d->RSSetState( rState ); // set the new rasterizer state
Кажется, намного длиннее, чем 9
cd3d->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME ) ;