6

私はdirectx11を学び、マルチサンプリングを設定しようとしています。何らかの理由で、インターネット上のすべてのチュートリアルはマルチサンプリングを無効にし、それを有効にする方法を決して説明しません。

最初に:私は周りを検索しましたが、使用方法の例を見つけることができませんCheckMultisampleQualityLevels。デバイスを作成し、その関数を呼び出し、使用可能なレベルを見つけてから、そのデバイスを破棄し、必要な設定で新しいデバイスを作成する必要があるようです。これはこれを行う正しい方法ですか?それとももっと良い方法はありますか?

次に、マルチサンプリングをどのように有効にしますか?動作する方法がわからないため、andCheckMultisampleQualityLevelsにいくつかの値(4や4など)を入力してみましたが、実行中は何も表示されません(33や2などのクレイジーな値を入力するとエラーになります)。これは、スワップチェーンの説明以外の場所に設定する必要がありますか、それともシェーダーが何らかの方法で干渉しますか(基本的なライトとテクスチャシェーダーを設定しています)?DXGI_SWAP_CHAIN_DESC.SampleDesc.CountDXGI_SWAP_CHAIN_DESC.SampleDesc.Quality

私はGTX570を持っているので、ほとんどのAA設定をサポートできることを知っています。何か助けになる場合に備えて、私はこの一連のチュートリアルに従っています:http: //rastertek.com/tutindex.html

4

3 に答える 3

7

1. ID3D11Device :: CheckMultisampleQualityLevelsを呼び出します。これにより、アダプターでサポートされている品質レベルが得られます。

2. DXGI_SWAP_CHAIN_DESCに入力するときに、SampleDesc.CountとSampleDesc.Qualityを設定します。

3.マルチサンプルアンチエイリアシングが使用されている場合、すべてのバインドされたレンダーターゲットと深度バッファーは同じサンプル数と品質レベルを持っている必要があります。(DXGI_SAMPLE_DESC構造体

D3D11_RASTERIZER_DESC( D3D11_RASTERIZER_DESC構造)、API機能レベル10.1以降に関するmsdnドキュメントによると、MultisampleEnableは、MSAAに関するポイントと三角形には影響せず、ラインレンダリングアルゴリズムの選択にのみ影響します。

詳細については、msdnを確認する必要があります。

于 2012-12-31T02:54:17.620 に答える
2

これは私を助けました:

  • デプスバッファは、同じサンプル数と品質レベルを持っている必要があります
  • depthStencilViewDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS;

@Telanorと@user1253930に感謝します

于 2013-04-18T15:29:19.690 に答える
1

MultisampleEnableD3D11_RASTERIZER_DESCを設定してみてください

また、品質を1に設定します。

CheckmultisampleQualityについては、作成するDXGIフォーマットを設定するだけです。必要なサンプルの数。最後に、uintへのポインターを渡すと、使用可能な品質レベルの数が返されます。0を返す場合、マルチサンプリングはサポートされていません。それ以外の場合は、設定できる品質レベルがわかります。

于 2011-03-16T19:49:27.887 に答える