5

バックグラウンド

私の知る限り、WPFは、可能であればハードウェアアクセラレーションによる描画を行い、ユーザーがDirectX9以降を使用していない場合はソフトウェアレンダリングにフォールバックします。これは非常に興味深いアイデアであり、XAMLのアイデアも気に入っています。

私がそれを好きではない理由、そして私がそれを学ぶことさえしなかった理由は、WindowsフォームはMicrosoftテクノロジーであり、WPFより劣っていますが、 Monoを介したクロスプラットフォームであり、WPFには当てはまらないためです。そしておそらく決してそうなることはないでしょう。Linux / OSX用の.NETWinFormsラッパーが将来、特許の壁にぶつかるかどうかについては議論
がありますが、それはこの質問の範囲外です。

質問

必要なGPU/ドライバーのないシステムのソフトウェアフォールバックで基本的なハードウェアアクセラレーション(アルファ合成、高速ピクセル操作など)を使用できるようにする.NETおよびMono用のライブラリはありますか?

つまり、古くないデスクトップや最新のラップトップでは高速のグラフィックスですが、ローエンドのネットブックや同様のデバイスでは使用可能なグラフィックスです。これはゲーム開発用ではありません

その他の注意事項

GDI+を高速化するための秘訣がいくつかあります。Set / GetPixelは、生のポインタアクセスによって大幅に改善されています。
使用されるピクセル形式は、レンダリングを大幅に改善できます。32bppPArgb(32ビットと8ビットのAlphaおよびRGB値にalphaが事前に乗算されています)。より高速にすることができる他のトリック
がありますが、マネージドGDI+はいくつかの目的のためにまだ遅いです。

私が知っているフレームワーク

  • Unity3D- _AFAIKはMonoをサポートしていません。します。無料版のシェアウェア。
  • TAOフレームワーク-少し複雑に見え、ソフトウェアレンダリングをサポートしていないようです。
  • OpenTK-アクティブで、十分に開発されており、TAOよりも優れていますが、ソフトウェアのフォールバックもありません。
  • SDL.NET-上記と同じ問題。
  • MonoXNA-上記と同じ。
  • Irrlicht-「これは完全にクロスプラットフォームであり、D3D、OpenGL、および独自のソフトウェアレンダラーを使用しています」。
  • Silverlight / Moonlight - dthorpeによって提案されました。アルファ品質、サポートなし。
  • Mono.Cairo -MarkHによって提案されまし
  • AGG-非公式のC#ポートを使用してC ++で実装された、高品質で非常に効率的なソフトウェアレンダリング。
  • Axiom3D -Ogreポート。オープンソースのMonoをサポートし、生​​きているようです。有望な。

私の現在の選択はIrrlichtを試してみますが、それは私が他に選択肢がないからです。ある?また、ソフトウェアレンダリングをサポートしているように見えますが、 .NET / Monoラッパー
での状態はわかりません。また、サポートリンクはフォーラムの投稿です。

現時点ではありません。

さらに、さらに問題があります。グラフィックライブラリを「抽象化」する方法がわかりません。さらに、間違った選択をしたことに気付いた場合、どうしたらよいかわかりません。

この質問の長さを許してください。


編集:この質問には2つの非常に建設的な回答があったので、数日待って、最も賛成の回答を受け入れた回答としてチェックします。

別のニュースでは、OpenGLは、OSベンダーとサードパーティの両方によってソフトウェアに実装されているようです。これらの実装は、サードパーティのドライバーがない場合にOpenGLフレームワークによって使用されます。

4

3 に答える 3

5

カイロはどうですか?OpenGL、GDI、X、Quartzなどの複数のバックエンドがあり、ほぼすべてのデバイスで動作するはずです。Mono.Cairoはそのための.NETラッパーを実装していますが、これによってコードを介してバックエンドを切り替えることができるのか、それともシステムごとに再構築する必要があるのか​​はわかりません。

Cairoは、Moonlight、Gtk +、およびMonoのSystem.Drawing実装のバックエンドとして使用されます。

于 2011-12-15T00:34:03.950 に答える
1

OpenTK はどうですかmesa3d を見てから長い時間が経ちましたが、これは OpenGL にソフトウェア レンダリング機能を提供します。

于 2012-07-01T12:53:25.927 に答える