3

私はMFCを使用して非常に大きなアプリケーションを開発しました。当然、描画にはGDIを使用し、イベントルーティングにはCCmdTargetを使用し、ドキュメントビューアーキテクチャを使用しました。それは便利な開発パスでした。

現在、クライアントはこのアプリケーションを.Netに変換することに関心があります。私は(そして彼らも)C#で新製品を書くことを好みます。

アプリケーションは何千ものグラフィックオブジェクトを表示して操作するので、GDI +を使用すると、自然に見えますが、パフォーマンスの問題が発生する可能性があると考えました。そこで、グラフィックライブラリ(2D)としてOpenGL、具体的にはOpenTKを使用することを考えています。

OpenGLは、画面の一部の無効化に依存するこれらのWindowsAPIとは異なる動作をすることを知っています。OpenGLには、常に画面に描画するレンダリングループがあります。

私の質問は次のとおりです。これは、次のことを考えて、許容できる方法ですか。

  • パフォーマンス-ユーザーは特別なグラフィックカード(ハー​​ドウェア?)を必要としますか?グラフィックを多用しますが、ハイエンドのゲームではありません

  • 印刷と印刷プレビュー-これらは達成するのに複雑ですか?

  • 複数の選択とコンテキストメニュー

このライブラリはWindowsフォーム内でうまく機能しますか?

4

5 に答える 5

7

私はそうは思わない。可能な場合はWPFを使用し、できない場合はDirectXを使用します。

私はそれが公平ではないかもしれないことを知っていますが、私がWindows(マイクロソフト)の.NET(マイクロソフト)でプログラミングしているなら、私はむしろマイクロソフトからのDirectX...を使用したいと思います。

補足として:車輪の再発明はしないでください。正当な理由があることを確認した場合、open-glでのユーザーコントロールの再コーディングには非常に時間がかかる可能性があります。

于 2009-08-24T14:32:38.483 に答える
4

CADのようなソフトウェアを開発した私の経験では、OpenGLとDirectXの利点は、高速な深度テスト、スムーズな回転とパン、ライティング、および強力なテクスチャ機能です。明らかに他の利点もありますが、ほとんどのチュートリアルで信じられないことですが、これらのAPIのいずれかを使用してレンダリングシステムを実装することは重要な作業であり、軽視すべきではありません。

具体的には:

  • 2Dアプリで、すでにGDIに実装されている場合は、GDI+への切り替えがはるかに簡単になります。さらに、最新のハードウェアでは、2DGDIまたはGDI+は2DOpenGLまたはDirectXとほぼ同じ速度で動作する可能性があります。そして最終的には、特にGDI +でのダブルバッファサポートでは、エンドユーザーはおそらく違いに気付かないでしょう。

  • アプリの連続レンダリングループは必要ありません(おそらく必要ありません)。OpenGLおよびDirectXでは、シーンが変更されたときにウィンドウを明示的に無効にすることができます。

  • OpenGLまたはDirectXを使用する場合は、高速描画のためにオブジェクトをディスプレイリストまたは頂点配列(バッファー)に配置することを検討する必要があります。これは難しいことではありませんが、この方法でオブジェクトを管理すると、システムが複雑になり、レンダリングシステムのアーキテクチャが大幅に変わる可能性があります。

  • OpenGLまたはDirectXでの印刷も面倒な場合があります。一方では、ビットマップにレンダリングしてそれを印刷することができます。ただし、高品質の画像の場合は、代わりにベクトル化された画像が必要になる場合があります。これは、これらのレンダリングフレームワークのいずれかで作成するのは困難です。

  • また、OpenGLやDirectXでGUIを作成することは避けたいと思います...本当にチャレンジを探しているのでない限り;〜)

  • 最後に、これはインストールの観点からは煩わしいことですが、ユーザーのマシンにインストールする必要のあるManagedDirectXランタイムライブラリは約100MBです。

于 2009-09-01T16:50:04.353 に答える
0

私はC#の経験はありませんが、レンダリングにopenGLを使用する描画プログラムのレイヤーシステムを構築したことがあります。

このレイヤーを作成するために、openGLに現在のフレームバッファーを要求し、それを画像に変換して、現在のキャンバスの下でテクスチャとして使用しました。ですから、そこから印刷や印刷プレビューに行くのはとても簡単だと思います。

于 2009-08-24T14:38:48.990 に答える
0

DirectXとOpenGLは、GDI+よりもはるかに高速です。

于 2010-01-01T17:59:20.497 に答える
0

OpenTKの代わりにTAOフレームワークを使用することもできます。

于 2012-08-04T16:57:46.740 に答える