8

WPFを使用して簡単なレイトレーサーを作成したいと思います。これは学習プロジェクトであるため、パフォーマンスよりも構成可能性を優先します(それ以外の場合は、C ++を使用します)。

まだ比較的高速なピクセル描画が必要です。StackOverflowに関する前の質問には、GDIビットマップを取得することによってWPFでこれを実現するためのコードが含まれています私がWindowsプログラミングについて知っている比較的少ないことから、

  1. GDIは遅い
  2. DirectXは高速です
  3. WPFはその下でDirectXを使用します(ただし、WPFのどの部分かはわかりません)

WPFキャンバス(または同様のもの)を介してDirectX(GDIではない)を使用してピクセルレベルのアクセスを取得することは可能ですか?

可能であれば、(他のWPFコントロールと一緒に)WPFウィンドウ内にDirectXAPI呼び出しを組み込むための提案も検討します。

前もって感謝します。

4

3 に答える 3

5

興味深いですが、レイトレーシングを使用すると、画面にピクセルを書き込むのは遅い部分ではありません(すべきではありません)。WriteableBitmapただし、目的に使用することはできます。それは確かにあなたが望むもののために十分に速いです。

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx

(詳細については、このemu / IDE(http://0x10c-devkit.com/ )で使用しており、低解像度の表示を優れたパフォーマンスで更新できます。そのソースはgithubリポジトリのLEM1802プラグインにあります。 )。

ああ、このビット:https ://github.com/kierenj/0x10c-DevKit/blob/master/PluginAPI/NyaElektriska.LEM1802/GPU.cs-を参照してくださいUpdateDisplay

于 2012-09-25T12:29:09.770 に答える
3

別の解決策はWriteableBitmapExです。組み込みのWriteableBitmapを拡張します。

于 2012-09-25T13:48:30.627 に答える
2

Direct Canvasと呼ばれるオープンソースプロジェクトがあります。これは、ベクターグラフィックス、マルチメディアファイル、拡張可能なピクセルシェーダー、ブレンディングモードなどをサポートする、ハードウェアアクセラレーションによる2D描画APIです。

http://directcanvas.codeplex.com/

デモhttp://www.youtube.com/user/jdollah69#p/u

于 2012-09-25T12:21:50.637 に答える