1

GPU の Direct2D に「シーン」を保存する方法はありますか?

私は何かを探していますID2D1Mesh(つまり、リソースをビットマップとしてではなくベクトル形式で保存します) が、メッシュ/シーン/リソースをアンチエイリアシングでレンダリングするかどうかを構成できる場所を探しています。

4

3 に答える 3

2

2 つの異なるレベルでアンチエイリアシングを適用できるという点で、Rick は正しいです。Direct2D または Direct3D を介して。両方を行うことはできますが、それは無意味であり、リソースを無駄にし、悪い結果につながるだけです。プリミティブごとのジオメトリ対応アンチエイリアシングが必要な場合は、Direct2D アンチエイリアシングが適しています。Direct3D アンチエイリアシングは、一部のシナリオで全体的なパフォーマンスを向上させるために品質を少し犠牲にする場合に役立ちます。

Direct2D 1.1 コマンド リストは、さまざまなターゲットに対して再生できる描画コマンドのリストを文字どおり格納/記録します。ラスタライズされていないため、これはあなたが求めているものかもしれません。概念的には、ベクター画像をデバイス メモリに保存するようなものです。コマンド リストは、一度作成するとコマンド リストを変更できず、描画されるリソースも変更できないという点で多少制限されていますが、それでも非常に便利です。

于 2013-01-17T21:59:22.410 に答える
1

Windows 8.1 では、Direct2D はジオメトリ リアライゼーションを導入しました。これにより、ジオメトリのテッセレーション バージョンを格納し、後でそれをアンチエイリアシングの有無にかかわらずレンダリングすることができます。これらは、メッシュの使用よりも強くお勧めします。コマンド リストは便利ですが、ジオメトリ リアライゼーションを自分で作成して保存するのと同じキャッシング機能はありません。

于 2014-03-06T09:58:24.163 に答える
1

でアンチエイリアシングを行う方法はありますが、簡単ではありませんID2D1Mesh。Direct3D デバイスを自分で作成してから使用する必要がありますID2D1Factory::CreateDxgiSurfaceRenderTarget()。これにより、D3D デバイスのマルチサンプリング/アンチエイリアシング設定を直接構成することができ、メッシュは問題なく再生されます (実際、Direct2D に常にエイリアシング レンダリングを使用するように指示するだけでよいと思います)。私はこれを自分で行ったことはありませんが、これを行う方法を示す MSDN サンプルがあります。気が弱い人向けではありません...そして、ソフトウェアレンダリングを行うには、WARPデバイスを初期化する必要があります。ただし、機能します。

また、Direct2D 1.1 (Windows 8、または Windows 7 + Platform Update) では、ID2D1CommandList記録/再生用のインターフェイスを使用できます。それが「GPUへのコンパイル」(alaメッシュ)として実装されているのか、それとも単なるマクロ(コマンドの記録/再生)なのかはわかりません。

于 2013-01-17T20:26:39.237 に答える