opengl窗口外的菜单是如何实现的?
How are opengl menus that go outside of the window implemented?
我注意到有时候当你右键点击时,菜单会移出窗口。
是用一个单独的窗口实现的吗?如果有,我怎样才能得到这个功能。我正在尝试使用GLFW,但我明白,如果这是不可能的。
目前我在windows上,但我喜欢保持我的选项开放,这就是为什么GLFW更可取。
我注意到GLUT有这样一个特性。如果你对我正在看的东西感到困惑,那就看看这个。
谢谢你的帮助!
重叠菜单(在MS Windows中)必须作为一个新的顶层窗口来实现,您将有一个新的OpenGL渲染上下文并在该空间中绘制菜单-是的,对于菜单溢出父窗口的边缘情况来说,这是相当多的工作,
然而,这在OpenGL编程中通常不是问题,因为如果你正在制作一款全屏游戏,那么菜单将始终显示在主窗口中,即使它不是全屏游戏,你的用户也不会注意到它们,因为游戏倾向于使用不同的UI概念,如径向菜单,这不会溢出父窗口。
或者如果你正在制作一款非游戏游戏,那么它很可能不是全屏的,并且将成为使用原生UI工具包(例如3ds Max, AutoCAD等)渲染的大型应用程序中的OpenGL渲染区域,在这种情况下没有问题:只需使用原生菜单。
当然,你可以在OpenGL应用程序中使用本机菜单,只要你为本机窗口消息做了必要的管道。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 如何实现内部实现依赖于模板参数的类
- 我的 PRNG 实现与我尝试复制的实现有何不同?