c# - 带有 Directx 11 的 WPF

标签 c# c++ wpf directx wrapper

现在我有一个用 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);

谢谢

最佳答案

您需要访问渲染场景的表面,并将其句柄发送给 WPF 系统的 D3DImage。看看 codeplex 是如何制作的。

关于c# - 带有 Directx 11 的 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13942011/

相关文章:

c# - 我该如何处理 "CrossThreadMessagingException"?

c# - 如何从代码中添加/删除 Windows Phone 8.1(通用)应用程序的默认磁贴/辅助磁贴?

c# - 访问修改后的闭包 (2)

c# - 错误 CS0433 "Type ' X' already exists in both A.dll and B.dll "来自哪里?

c++ - 为什么全局或静态对象在程序退出时会导致崩溃?

c# - 在 WPF 中,MVVM 应该 ViewModel 参与打开一个窗口,例如关于窗口?

c# - 从 ViewModel 控制 TextBox 的滚动位置?

c++ - 指针数组作为函数中的参数

c++ - 什么是复制省略和返回值优化?

c# - 从数据行 View WPF 中获取数据网格行