在Windows桌面应用程序的OpenGL窗口上显示WPF控件
Display WPF controls over OpenGL window in Windows desktop application
我们正在开发带有全屏OpenGL图形的Windows桌面应用程序。现在我们想要在OpenGL上显示一堆控件(箭头,按钮等),事实证明这是非常困难的。
大多数教程建议使用WindowsFormsHost进行OpenGL渲染,我们这样做了:http://www.codeproject.com/Articles/23736/Creating-OpenGL-Windows-in-WPF
不幸的是,现在我们不能在WindowsFormsHost上绘制WPF控件,在互联网上也有很多关于这个的讨论:WindowsFormsHost总是最顶级的WPF元素在WindowsFormsHost上渲染WPF控件
有一些hack可以解决这个问题,但是它们看起来都很脏。是否有一种正确的方法来绘制OpenGL直接在WPF没有搞乱Windows窗体?(我只是不知道为什么你不能在WPF中直接使用)。
简而言之:在WPF应用程序中是否有一个已知的解决方案可以在OpenGL上绘制UI ?
创建wpf窗口。在后台渲染你的opengl视窗。获取opengl视图的快照,并在WPF中显示图像。将WPF图像上的所有UI事件转移到opengl视口
编辑:有一种方法可以在WPF窗口中托管win32窗口。你可以参考这个视频https://www.youtube.com/watch?v=JO4uW8Xb230。如果您使用GLFW创建win32窗口,您只需要使用底层句柄或将窗口强制转换为WPF需要托管该窗口的HWND。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 无法使用String.Format在WPF中显示版本字符串
- 在Windows桌面应用程序的OpenGL窗口上显示WPF控件