3

现在我有一个用 c++/cli 编写的包装器,用于 c#(WPF)。这个包装器将原生 c++ 图形引擎包装成 c# 可理解的代码。但这不是问题(等等...)。因此,在 WPF 中,我有一个 Windows 控件(是的,这是可能的),我从(HWND)接收句柄。所有这一切都很棒,并且帧正在渲染,唯一的问题是性能。渲染触发如下:

        ...
        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 回答