1

Win32 GDI で CDC ラッピングを使用して画面に表示および印刷する成熟した MFC C++ アプリケーションがあります。何年にもわたって最適化されてきましたが、もう少し速いものに置き換えたいと思います。グラフィックには、レンダリングされた三角形のサーフェス モデル、複雑なポリラインとポリゴン、および大量のテキストが含まれていました。次の基準を満たす必要があります。

  • 表示されるベクトルの数は非常に多くなる可能性があります。たとえば、単一のサーフェス三角形は、レンダリング時に多数の線と塗りつぶしを生成する可能性があります。現在、この情報はどこにも保存されておらず、オンザフライで生成および描画されます。SDK は、バッファリングされるベクトルの総数を制限することをサポートする必要があります。そうしないと、メモリ不足になりがちです。

  • SDK は、CView および ScrollView クラスを含む任意の CWnd 派生クラスにレンダリングできる必要があります。

  • SDK は、すべての Windows 印刷デバイスへの印刷をサポートする必要があります。

  • SDK は、低レベルの CDC / GDI 呼び出しからの移植を比較的簡単にするのに十分なほど低レベルである必要があります。

  • オープンソースは常に素晴らしいものですが、オプションのアップグレード/サポート付きで、最大 2,000 ドルの 1 回限りの費用も問題ありません。ユーザーあたりのライセンス費用は受け入れられません。

  • ソース コードへのアクセスは、特に Windows CE / Mobile で SDK の一部を実行するというアイデアを考えれば、大きなボーナスです。

  • 私は現在、3D から 2D ビューポートへの独自の管理を行っています。適切な低レベルの SDK が利用できない場合は、高レベルの SDK で 3D を適切に処理し、32 ビット Windows プラットフォームで数百万の三角形、多角形、およびテキスト エンティティを処理する必要があります。

助言がありますか?提案された提案に具体的な長所と短所を記載していただければ幸いです。

4

2 に答える 2

2

DirectX またはSDLがニーズに合うと思います。これらは 3D 用に設計されていますが、2D でも機能します。どちらも Windows CE / Mobile をサポートしており、SDL は Microsoft 以外の OS でも利用できます。

残念ながら、ライブラリでは GDI との直接的な互換性はサポートされていません。ただし、GDI で設計されたアプリケーション クラスからのすべての出力グラフィックスを受け入れ、DirectX または SDL クラスのニーズに合わせて形式を変換するコンバーター クラスを作成することで、このトリックを実行できます (使用するものによって異なります)。

個人的には、そのようなコンバータークラスを一度作成しました。SDL を使用して Pocket PC 用に作成したゲームがあり、それを Palm デバイスに移植する必要がありました。そこでは別のグラフィックス ライブラリを使用する必要がありましたが (ライブラリの名前は今は覚えていません)、すべての SDL 関数出力を他のライブラリが必要とする形式に移植することに成功しました。現在実行中のデバイスに応じて、Palm または Pocket PC ライブラリへの呼び出しを転送するコンバーター (ラッパー) 関数を呼び出すように、アプリケーションを変更する必要がありました。したがって、GDI -> DirectX または GDI -> SDL の変換でも同じことができると思います。

于 2008-10-15T07:47:41.157 に答える
1

プロジェクトでFastGraph ( http://www.fastgraph.com ) を評価したことがあります。私が書いた小さなテスト プログラムでは、非常に高速で気に入りました。外部の理由 (私が評価したライブラリとは関係ありません) でそれを使用しないことになったので、これ以上の実用的な経験はありません。

于 2008-10-15T11:20:06.050 に答える