2016-03-31 14 views
0

ダイレクトX 11で小さなゲームエンジンを作成していますが、これは素晴らしいですが、レンダリング時に3Dオブジェクトと2Dオブジェクトがエッジの周りに非常に荒く見えます。以前はDirect X 9から来ていましたが、この問題はそこにはありませんでした。どのようにしてアンチエイリアシングや何らかのマルチサンプリングを有効にして、テクスチャがギザギザにならないようにするにはどうすればいいのでしょうか?Direct X 11ギザギザのエッジ

swapChainDesc.SampleDesc.Count = 2; 
swapChainDesc.SampleDesc.Quality = 0; 

depthBufferDesc.SampleDesc.Count = 2; 
depthBufferDesc.SampleDesc.Quality = 0; 

これらは数と品質の組み合わせですが、ここでの設定に関係なく、視覚的な違いはなくDirect3Dはデバイスの作成に失敗します。設定はアプリケーションが決定したものを使用するように設計されているため、私のGPUは何も上書きしません。

答えて

1

スワップチェーンのレンダーターゲット、あなたの深さ/ステンシルバッファ、および関連するビュー(D3D11_TEX2DMS_RTVD3D11_DSV_DIMENSION_TEXTURE2DMS)の正しい値を使用するためのMSAAサンプル数を実現するだけでなく、あなたが実際にあなたのラスタライザでTRUEにD3D11_RASTERIZER_DESC.MultisampleEnableを設定する必要があります状態:

CD3D11_RASTERIZER_DESC rastDesc(D3D11_FILL_SOLID, D3D11_CULL_NONE, FALSE, 
    D3D11_DEFAULT_DEPTH_BIAS, D3D11_DEFAULT_DEPTH_BIAS_CLAMP, 
    D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS, TRUE, FALSE, 
    TRUE /*this is MSAA enable*/, FALSE); 

は、より詳細な例についてのDirectXツールキットためSimple renderingレッスンを参照してください。

Direct3Dの機能レベル10.1以上のハードウェアは、4x MSAAをサポートします。 Direct3D Feature Level 11.0以上のハードウェアは4xおよび8x MSAAをサポートします。すべてが2倍のMSAAをサポートする必要があります。

+0

これはエッジでは機能しているように見えましたが、テクスチャはやや歪んでいます。たとえば、単純なリングのテクスチャは少し歪んでおり、その内部にボックスが表示されます。ソースイメージと実際にゲームでレンダリングされるイメージを比較するスクリーンショットがあります。 https://www.dropbox.com/s/epkipy37o0b3yq7/comparison.png?dl=0 その他の問題がありますか?これはDirect3D 9や他の場所では起こりません。 – user5901143

+0

パイプラインには多くの状態が存在するため、いくつかの理由が考えられます。 2つの画像に異なる背景があるので、ブレンドの相違にも寄与します。シェーダで[テクセルのシフト](https://msdn.microsoft.com/en-us/library/windows/desktop/bb205073.aspx#Mapping_Texels_to_Pixels_DX10)を行っていますか? –

+0

ソースイメージでは、gimpを使って黒い背景を追加しました。しかし、それはどのように見えるはずです。私はシフトをしません、私のシェーダは、基本的なテクスチャは効果や修正が適用されません。 – user5901143

関連する問題