2012-09-25 50 views
8

WPFを使用して単純なレイトレーサを作成したいと思います。それは学習プロジェクトなので、パフォーマンスよりも設定性を優先します(それ以外の場合はC++に行きます)。WPFの高速ピクセル描画

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

  1. GDIは、DirectXはWPFが

はそれが可能です(これはしかしWPFの部分がわからない)の下のDirectXを使用しています

  • 速いです
  • 遅いですWPF Canvas(または同様のもの)を使用してDirectX(GDIではなく)を使用してピクセルレベルのアクセスを取得しますか?

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

    ありがとうございます。

    +0

    最も単純なのは、四面体のような単純なものをレンダリングし、それをpngに保存するコマンドラインアプリケーションを作成することです。いったんそれを持っていれば、レイトレースそのものに関連する多くの問題を解決することができました。次に、画面などに描画することについて心配することができます。 – Indy9000

    +0

    @Gigi:WPFの画面に直接書き込むことは賢明ではないと思います。http://blogs.msdn.com/b/greg_schechter/アーカイブ/ 2006/05/02/588934.aspx – Surfbutler

    +2

    私は 'WritableBitmap'を使うのはいい考えです。 – CodesInChaos

    答えて

    5

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

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

    (情報については、私はこのエミュー/ IDEでそれを使用する - http://0x10c-devkit.com/ - そしてそれは素晴らしいパフォーマンスと低解像度の表示をリフレッシュすることができますgithubのリポジトリ、LEM1802プラグイン上のソースがあります。 )

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

    +0

    です。あなたは有効なポイントを挙げます。私は提供されたリンクに基づいていくつかの研究を行い、おそらくこれと一緒に行くでしょう。 – Gigi

    +0

    ちょうど答えと一緒に行くために、私は私の実装を試みるときに役立つこのリンクを見つけました:http://tipsandtricks.runicsoft.com/CSharp/WpfPixelDrawing.html – Gigi

    2

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

    http://directcanvas.codeplex.com/

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

    +0

    レイトレーシングがピクセルシェーダで行われていない限り、それは役に立たず、ベクターグラフィックス、マルチメディアファイル、またはブレンドモードにはまったく使用されません。 Dudeはピクセルを書きたいと思っています。それはすべて –

    2

    もう1つの解決策は、WriteableBitmapExです。これは、組み込みのWriteableBitmapを拡張します。

    関連する問題