3

現在、c#(WPF)で使用されるc ++/cliで記述されたラッパーがあります。このラッパーは、ネイティブのc ++グラフィックエンジンをc#で理解できるコードにラップしています。しかし、これは問題ではありません(待ってください...)。したがって、WPFには、(HWND)からハンドルを受け取るWindowsコントロール(はい、可能です)があります。これはすべて素晴らしいことであり、フレームはレンダリングされています。唯一の問題はパフォーマンスです。レンダリングは次のようにトリガーされます。

        ...
        System.Windows.Media.CompositionTarget.Rendering += new EventHandler(Render);
    }

    private void Render(Object sender, EventArgs e)
    {
        EngineWrapper.RenderFrame();
    }

したがって、fpsは非常に低く、Render()への呼び出しレートはかなり低くなります(私のアプリケーションは元々MFCであり、フレームレートがはるかに高かったためです!)。だから私はあなたに尋ねています、これを後押しする方法はありますか?新しい方法、別のスレッド?(どういうわけか可能でなければなりません...)

編集:私は次の方法でWindowsコントロールを作成します:

        System.Windows.Forms.Integration.WindowsFormsHost host =
            new System.Windows.Forms.Integration.WindowsFormsHost();

        System.Windows.Forms.Panel panel = new System.Windows.Forms.Panel();

        host.Child = panel;

        this.RenderCamera_WorkareaGrid.Children.Add(host);

ありがとうございました

4

1 に答える 1

2

シーンをレンダリングするサーフェスにアクセスし、そのハンドルをWPFシステムのD3DImageに送信する必要があります。それがどのように作られたかをcodeplexで見てください。

于 2012-12-19T09:35:51.490 に答える