Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何实现窗口之外的opengl菜单?_C++_Opengl_Glfw_Glew - Fatal编程技术网

C++ 如何实现窗口之外的opengl菜单?

C++ 如何实现窗口之外的opengl菜单?,c++,opengl,glfw,glew,C++,Opengl,Glfw,Glew,我在看当你右键点击时,菜单是如何跳出窗口的 这是通过单独的窗口实现的吗?如果是,如何获得此功能。我正在尝试使用GLFW,但如果不可能,我理解 目前我使用windows,但我喜欢打开我的选项,这就是为什么GLFW更可取的原因 我注意到过剩有这样一个特点。如果你对我正在看的东西感到困惑,那么看看这个 谢谢你的帮助 重叠菜单(在MS Windows中)必须作为一个新的顶级窗口来实现,您将拥有一个新的OpenGL渲染上下文,并在该空间中绘制菜单-是的,这是一项相当多的工作,所有这些工作都是针对菜单覆盖父

我在看当你右键点击时,菜单是如何跳出窗口的

这是通过单独的窗口实现的吗?如果是,如何获得此功能。我正在尝试使用GLFW,但如果不可能,我理解

目前我使用windows,但我喜欢打开我的选项,这就是为什么GLFW更可取的原因

我注意到过剩有这样一个特点。如果你对我正在看的东西感到困惑,那么看看这个

谢谢你的帮助

重叠菜单(在MS Windows中)必须作为一个新的顶级窗口来实现,您将拥有一个新的OpenGL渲染上下文,并在该空间中绘制菜单-是的,这是一项相当多的工作,所有这些工作都是针对菜单覆盖父窗口的边缘情况

但是,这在OpenGL编程中并不常见,因为如果您正在进行全屏游戏,则菜单将始终显示在主窗口中,即使它不是一个全屏的游戏,你的用户也不会注意到它们,因为游戏倾向于使用不同的UI概念,比如径向菜单,它不会超出父窗口

或者,如果您正在处理非游戏标题,很可能它不是全屏的,并且将成为使用本机UI工具包(例如3ds Max、AutoCAD等)渲染的更大应用程序中的OpenGL渲染区域,在这种情况下没有问题:只需使用本机菜单即可


当然,您可以在OpenGL应用程序中使用本机菜单,如果您为本机窗口消息执行了必要的管道操作。

在GLFW窗口中实现本机Windows上下文菜单可以通过使用
TrackPopupMenu
之类的工具轻松完成。@rotem如果我不想要本机怎么办?@russellgreen,那么您需要一个单独的OpenGL上下文,或者使用不能离开主窗口区域的菜单。GLFW支持共享上下文,这样我就不必重新创建所有对象了,这可能吗?