2

C ++ / CLIを使用して単純なGDIベースのデータプロッターを作成しましたが、特に高速ではありません(一部の基本的なプロファイリングでは、画面へのレンダリングが問題であることが示されています)。

UserControlのハードウェアアクセラレーションを有効にする方法はありますか、それともdirect3Dの.netインターフェイスはありますか?...または私が検討できる他のオプションがいくつかあります。

マネージコードを使用しているため、ソリューションは可能な限りCLIと互換性がある必要があります。

[編集]それが役立つ場合は、それぞれ2x2ピクセルの長方形のストリップ(128データポイント)を使用してレンダリングしていますGraphics::FillRectangle-おそらくそれを行うためのより良い方法がありますか?

4

5 に答える 5

5

Managed DirectX は、しばらくの間非推奨になっています。あなたは本当にそれを使いたくない. 代わりに、C++/CLI で記述された DirectX SDK API 用のオープン ソース相互運用レイヤーであるSlimDXを使用する必要があります。Managed DirectX より優れており、開発者の専門家コミュニティによってサポートされています。(私は、彼らと一緒に DirectWrite のサポートを改善する作業をすぐに行う予定です。)

于 2009-07-17T02:01:08.820 に答える
2

GDI+ のパフォーマンスがあまり良くないのは事実ですが、仕事関連のプロジェクトで、1680x1050 の解像度 (スクロール グラフ)。

これを実現するには、多くの調整が必要でした:

  • 描画する前に、すべてを 1 つのパスに変換します。
  • バック バッファを使用する場合は、ピクセル フォーマット Format32bppPArgb を使用します。これにより、ブリッティングが 2 ~ 4 倍高速化されます。
  • 縦線(高周波信号)が多いパスを描画する場合は、代わりにバックバッファに横線として描画し、画面上で回転した画像を描画します。回転した画像の描画にも一定のコストがかかることに注意してください。

あなたのシナリオがどのように多くの最適化を必要とするのかわかりません.128ポイントのデータは何もありません. ただし、これらのポイントを 1 つのGraphicsPathに配置すると、マーシャリングのオーバーヘッドが少なくなるため、違いが生じる可能性があります。

ところで、ここで話している解像度とフレームレートは何ですか?

于 2009-08-07T07:56:25.723 に答える
2

私の経験では、GDI+ を使用しても十分なパフォーマンスは得られません。単純な描画でも、多くのオーバーヘッドがあることがすぐにわかります。

代替手段は(あなたが述べたように)Direct3Dであるか、システムコールを使用した通常のGDIを検討できます。これは明らかにコード プラットフォームに依存しますが、非常に高速になる可能性があります。私はそれを使用して良い結果を得ました。

それはすべて、どの程度の複雑さに対処したいかによって異なります。基本を理解すれば、GDI は比較的簡単ですが、Direct3D はもう少し複雑です。ただし、Direct3D はより将来性があります。

于 2009-07-02T14:50:20.587 に答える
1

Microsoft は現在、ハードウェア アクセラレーションによる 2D 描画であるDirect2Dも提供しています。

Direct2D は、ハードウェア アクセラレーションによるイミディエイト モードの 2-D グラフィックス API であり、2-D ジオメトリ、ビットマップ、およびテキストに対して高いパフォーマンスと高品質のレンダリングを提供します。Direct2D API は、GDI、GDI+、および Direct3D とうまく相互運用できるように設計されています。

Windows 7/Server 2008 R2 が必要ですが、プラットフォーム アップデートを通じて Vista/Server 2008 にサポートが追加されました。

于 2010-01-20T18:04:59.280 に答える
1

PC のグラフィックス テキストをレンダリングするために、ワイヤレス サーモEPD を使用してデータ流入のリダイレクトを完了したときに、同様のソリューションを探していました。上記のコメントから可能な方法を作る方法をおそらく見つけるでしょう。

ハードウェア アクセラレーションは、すべての 2D 描画操作でサポートされているわけではないことに注意してください。オンにすると、一部のカスタム ビューまたは描画呼び出しに影響する可能性があります。

于 2020-03-15T09:07:57.320 に答える