c/c++语言开发共享我如何一起使用GTK和过剩?

我知道为了编写GTK应用程序,我编写了一堆代码来描述主窗口中的内容,然后我调用:

gtk_main(); 

此后的任何代码语句都不会被执行。

现在让我们假设我喜欢我的GTK应用程序显示我用glut编写的内容,它本身包含一堆关于需要设置图形的语句等等,然后以语句结束:

 glutMainLoop(); 

之后的任何事情都没有执行。

所以我的问题是这两个语句中的任何一个都阻止我调用另一个。

    您正在运行主循环。 gtk_main()运行直到调用gtk_quit()

    GTK.org上的gtk_main()

    运行主循环,直到调用gtk_main_quit() 。 您可以将调用嵌套到gtk_main()。 在这种情况下,gtk_main_quit()将使主循环的最内部调用返回。

    此外, glutMainLoop()以相同的方式工作,它永远处理GL事件。

    在OpenGL.org上的glutMainLoop()

    glutMainLoop()进入GLUT事件处理循环。 在GLUT程序中最多应调用一次该例程。 一旦被调用,该例程将永远不会返回。 它将根据需要调用已注册的任何回调。

    所以,你们要同时执行这些事情(我认为它们可能会相互干扰,因此你们可能会得到意想不到的结果)然后你需要从内部调用gtk_main_iteration()

    GTK.org上的gtk_main_iteration()

    运行mainloop的单次迭代。 如果没有等待处理的事件,GTK +将阻塞,直到注意到下一个事件。 如果您不想阻止查看gtk_main_iteration_do()或先检查gtk_events_pending()是否有任何事件待处理。

    现在.. GLUT没有等效的gtk_main_iteration()所以你需要注册GLUT回调。

    您可以使用glutIdleFunc(void (*func)(void))运行gtk_main_iteration()来运行GLUT的回调,它将为每个帧运行一个回调 – glutIdleFunc() ..

    或者您可以回调glutTimerFunc(unsigned int msecs, void (*func)(int value), value)来调用并每隔200毫秒左右检查gtk_main_iteration()的返回值。

    我可能会尝试两者, glutIdleFunc()可能并不总是被定期调用以获得良好的响应能力。

    尽管如此,真的值得看看GTK的GL支持

    你没有。 通常没有意义。

    GLUT是一个用于创建和管理OpenGL窗口的库。 GTK已经一个OpenGL窗口。 如果你正在使用GTK,那么使用GLUT是没有意义的。 这就像有两个矢量数学库或其他东西。

      以上就是c/c++开发分享我如何一起使用GTK和过剩?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560267.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐