Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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中呈现QWidget_C++_Qt_Opengl_User Interface_Cegui - Fatal编程技术网

C++ 在OpenGL中呈现QWidget

C++ 在OpenGL中呈现QWidget,c++,qt,opengl,user-interface,cegui,C++,Qt,Opengl,User Interface,Cegui,我有一个OpenGL应用程序,我想给它添加一个GUI 我的问题是,我想保留创建窗口和主循环的方式。事实上,我想保留我的应用程序,只是添加一些小部件与场景交互 我知道我们可以通过重载QApplication将OpenGL用作渲染器,但它会创建一个窗口并创建另一个我不想要的OpenGL上下文。。。我知道我可以使用QGLWidget将OpenGL场景渲染到其中,但它也不适合我想要的 我在许多论坛上搜索,没有找到解决方案。我想知道这是否可能,如果可能,实现这一目标的方法是什么 如果做不到,有没有办法?看

我有一个OpenGL应用程序,我想给它添加一个GUI

我的问题是,我想保留创建窗口和主循环的方式。事实上,我想保留我的应用程序,只是添加一些小部件与场景交互

我知道我们可以通过重载QApplication将OpenGL用作渲染器,但它会创建一个窗口并创建另一个我不想要的OpenGL上下文。。。我知道我可以使用QGLWidget将OpenGL场景渲染到其中,但它也不适合我想要的

我在许多论坛上搜索,没有找到解决方案。我想知道这是否可能,如果可能,实现这一目标的方法是什么

如果做不到,有没有办法?看来CEGUI可以做到,但在我看来,它似乎有点年轻不

我的问题是,我想保留创建窗口和主循环的方式

要使用Qt小部件系统,必须使用QApplication及其派生的事件系统。不能让两个事件循环在相同的资源(窗口、用户输入、信号接收和传递)之间发生冲突

事实上,我想保留我的应用程序,只是添加一些小部件与场景交互

顺便说一句?您现在是如何创建窗口的?供过于求?然后从QGLWidget派生并覆盖其
resizeGL
paintGL
timerEvent
,使用0延迟计时器将空闲时间加倍,
mouse*Event
方法将提供与GLUT完全相同的行为

您可能会发现Qt的框架和事件系统正是您所需要的

我的问题是,我想保留创建窗口和主循环的方式

要使用Qt小部件系统,必须使用QApplication及其派生的事件系统。不能让两个事件循环在相同的资源(窗口、用户输入、信号接收和传递)之间发生冲突

事实上,我想保留我的应用程序,只是添加一些小部件与场景交互

顺便说一句?您现在是如何创建窗口的?供过于求?然后从QGLWidget派生并覆盖其
resizeGL
paintGL
timerEvent
,使用0延迟计时器将空闲时间加倍,
mouse*Event
方法将提供与GLUT完全相同的行为


您可能会发现Qt的框架和事件系统正是您所需要的。

您是否尝试过
hello gl
示例?它有一个关于OpenGL渲染和其他基本操作(调整大小、循环、查看)的非常好且干净的代码。如果您对GLUT有问题,只需添加
glutInit(&argc,argv)紧接着
int main()

您是否尝试了
hello gl
示例?它有一个关于OpenGL渲染和其他基本操作(调整大小、循环、查看)的非常好且干净的代码。如果您对GLUT有问题,只需添加
glutInit(&argc,argv)紧接着
int main()

事实上,我正在创建一个中间件,我想提供一个与我的客户机需求相匹配的GUI,但我不知道我的客户机在那里创建窗口的方式。。。我想知道是否有可能通过在纹理中呈现GUI…@PierreFourgeaud:GUI的问题是,要工作,它们必须集成到应用程序事件处理中。原则上,可以使用Qt渲染纹理。但是Qt的信号/插槽系统渗透到整个应用程序中,需要控制事件循环才能工作。将GUI渲染为纹理是完全可能的,但您仍然遇到了问题:如何将用户输入事件获取到该GUI中?事实上,我们想要模拟事件系统。当用户单击某个按钮时,只需触发相应的事件。因为在使用我们的中间件的应用程序中,用户不会使用鼠标,而是使用一些虚拟现实设备,如魔杖、剃须刀等。。。他将在3D中与GUI交互。将设备的位置和方向与光线投射结合起来,用户想做什么。@PierreFourgeaud:在这种情况下,您应该看看用于虚拟现实和游戏集成的GUI系统。我不能推荐一个具体的,但经过短暂的谷歌搜索,我发现了这个,看起来很有希望:谢谢。我们也看到了这个和cegui。但我们想知道他们是否足够强大,有一个正确的团结。这就是为什么我们尝试使用QT甚至GTK。但我们似乎遇到了与最后一个相同的问题。谢谢你的时间。事实上,我正在创建一个中间件,我想提供一个与我的客户需求相匹配的GUI,但我不知道我的客户在那里创建窗口的方式。。。我想知道是否有可能通过在纹理中呈现GUI…@PierreFourgeaud:GUI的问题是,要工作,它们必须集成到应用程序事件处理中。原则上,可以使用Qt渲染纹理。但是Qt的信号/插槽系统渗透到整个应用程序中,需要控制事件循环才能工作。将GUI渲染为纹理是完全可能的,但您仍然遇到了问题:如何将用户输入事件获取到该GUI中?事实上,我们想要模拟事件系统。当用户单击某个按钮时,只需触发相应的事件。因为在使用我们的中间件的应用程序中,用户不会使用鼠标,而是使用一些虚拟现实设备,如魔杖、剃须刀等。。。他将在3D中与GUI交互。将设备的位置和方向与光线投射结合起来,用户想做什么。@PierreFourgeaud:在这种情况下,您应该看看用于虚拟现实和游戏集成的GUI系统。我不能推荐一个具体的,但经过短暂的谷歌搜索,我发现了这个,看起来很有希望:谢谢。我们也看到了这个和cegui。但我们想知道他们是否足够强大,有一个正确的团结。这就是为什么我们尝试使用QT甚至GTK。但我们似乎遇到了与最后一个相同的问题。非常感谢。