8

D3D11 の API は少し扱いに​​くいか、正しく使用していないようです。

これは、D3D11 で 1 つのラスタライザーの状態を変更するための最小限の手順であるというのは本当ですか (例として、ワイヤーフレーム モード レンダリングへの変更を使用しています)。

  // 現在のラスタライザの状態とその説明を保持する変数
  ID3D11RasterizerState * rState ;
  D3D11_RASTERIZER_DESC rDesc ;

  // cd3d は ID3D11DeviceContext です  
  cd3d->RSGetState( &rState ) ; // 現在の状態を取得する
  rState->GetDesc( &rDesc ) ; // 状態の説明を取得します
  rDesc.FillMode = D3D11_FILL_WIREFRAME ; // ONE 設定を変更します

  // まったく新しいラスタライザの状態を作成します
  // d3d は ID3D11Device です
  d3d->CreateRasterizerState( &rDesc, &rState ) ;

  cd3d->RSSetState( rState ); // 新しいラスタライザーの状態を設定します

9'sよりずっと長いようです

  cd3d->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME ) ;
4

1 に答える 1

7

または、状態記述子をコードまたはクラスに対して「グローバル」に保ち、fillmode を変更して RSSetState で設定する (新しい変更を加えた元の状態) こともできますか? 取得して設定する代わりに。

于 2011-09-05T21:03:11.263 に答える