【问题标题】:Display WPF controls over OpenGL window in Windows desktop application在 Windows 桌面应用程序中的 OpenGL 窗口上显示 WPF 控件
【发布时间】:2015-05-22 13:39:02
【问题描述】:

我们正在开发具有全屏 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 的解决方案?

【问题讨论】:

  • 如何将控件渲染到位图目标,然后从中更新 GL 纹理?
  • 你的意思是把我所有的按钮、标签等渲染成位图,然后用我的其余图形在 OpenGL 中渲染它们?这就是我通常所说的“肮脏的黑客”:) 如果有办法避免这种情况,我会很高兴。
  • Dwayne Need 设法解决了这个问题。我还没有看过他的解决方案。此外,我们所做的只是在 GL 内容上方简单地弹出一个无边框 WPF Window,并跟踪它的位置,以便窗口的位置始终位于 GL 内容的“顶部”。
  • 这不是黑客攻击。这是在图形窗口上显示内容的一种相当标准的方式。这也与实际完成的方式非常相似。
  • 为什么不使用Qt SDK?

标签: c# c++ wpf opengl opengl-es


【解决方案1】:

创建一个 wpf 窗口。 在后台渲染您的 opengl 视口。 获取 opengl 视口的 Snapshot 并在 WPF 中显示图像。 将 WPF 图像上的所有 UI 事件传输到 opengl 视口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2011-02-17
    • 2017-09-09
    • 2022-01-24
    • 2015-11-15
    • 2012-06-26
    • 1970-01-01
    相关资源
    最近更新 更多