我们正在开发具有全屏 OpenGL 图形的 Windows 桌面应用程序。现在我们想要在 OpenGL 上显示一堆控件(箭头、按钮等),但事实证明很难做到这一点。
大多数教程建议使用 WindowsFormsHost 进行 OpenGL 渲染,我们也这样做了:http://www.codeproject.com/Articles/23736/Creating-OpenGL-Windows-in-WPF
不幸的是,现在我们无法通过 WindowsFormsHost 绘制 WPF 控件,互联网上对此也有很多讨论:WindowsFormsHost is always the most top from WPF element Render WPF control on top of WindowsFormsHost
有一些技巧可以解决这个问题,但它们看起来都很肮脏。 有没有一种正确的方法可以直接在 WPF 中绘制 OpenGL,而不会干扰 Windows 窗体? (我只是不知道为什么你不能直接在 WPF 中使用它)。
简而言之:是否有已知的解决方案可以在 WPF 应用程序中通过 OpenGL 绘制 UI?
最佳答案
创建一个 wpf 窗口。 在后台渲染您的 opengl 视口(viewport)。 获取 opengl 视口(viewport)的快照并在 WPF 中显示图像。 将 WPF 图像上的所有 UI 事件传输到 opengl 视口(viewport)。
编辑: 有一种方法可以在 WPF 窗口中托管 win32 窗口。 可以引用这个视频https://www.youtube.com/watch?v=JO4uW8Xb230 。 如果您使用 GLFW 创建 win32 窗口,则只需使用底层句柄或将窗口强制转换为 WPF 需要托管窗口的 HWND。
关于c# - 在 Windows 桌面应用程序中通过 OpenGL 窗口显示 WPF 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398227/