2017-11-24 5 views
0

サンプル数を4に設定し、マルチサンプリングを適用するようにラスタライザステージを設定することでマルチサンプリングを適用できます。これはうまくいくが、今は私が作っているドローコールのサブセットだけにマルチサンプリングを適用したい。これどうやってするの?擬似コードでマルチプルサンプリング/アンチエイリアスを特定の描画呼び出しに適用します。全部ではありません

が、これは私が達成したいものです:任意の助けを事前に

> build vertices data for a simple triangle 
> map and copy vertices data to device 
> send draw call to device which does NOT apply anti aliasing 

> build vertices data for a simple rectangle 
> map and copy vertices data to device 
> send draw call to device which applies multisampling/antialiasing 

ありがとう!

答えて

1

Direct3D 11にはD3D11_RASTERIZER_DESC.MultisampleEnableと呼ばれるラスタライザ状態があります。ただし、のみDirect3D Feature Level 9.xおよび10.0でマルチサンプルレンダリングを無効にすることに注意してください。 Direct3Dフィーチャレベル10.1以降のハードウェアでは、サンプル数が1より大きいターゲットをレンダリングするためにポイントまたは三角形をレンダリングする方法を変更することはありません。代わりに、ラインアルゴリズムをAntialiasedLineEnableと組み合わせて設定しますMSDNにあります。

つまり、MSAAサーフェスにレンダリングする場合、ほとんどの場合、マルチサンプルされます。 質問は:あなたは本当にここで何を達成しようとしていますか?

+0

私は3Dターゲットの上にいくつかのオーバーレイソフトウェアを作っています。しかし、彼らのデバイスは既に初期化されており、いくつかは定義された1のサンプル数しか持っていないので、私は描画デバイスに、例えば4倍のマルチサンプリングを描画呼び出しに適用するよう指示する方法が必要です。ターゲットの3Dプログラムに影響を与えることなく。 –

0

Chuck Walbournが説明したように、同じレンダリングターゲットにシングルサンプリングとマルチサンプリングのレンダリングを混在させることはできません。しかし、マルチサンプリングされたコンテンツをテクスチャにレンダリングし、それをシングルサンプルのコンテンツに解決することは可能です。このテクスチャをシングルサンプリングされたレンダーターゲットにレンダリングすることができます。

マルチサンプルリソースをシングルサンプルリソースに解決する方法は、ID3D11DeviceContext::ResolveSubresource()です。

関連する問題