如何在没有主要功能(例如 MFC / Qt)且不使用 GLUT 的项目中使用 OpenGL?
Posted
技术标签:
【中文标题】如何在没有主要功能(例如 MFC / Qt)且不使用 GLUT 的项目中使用 OpenGL?【英文标题】:How to use OpenGL in a project that has no main function (e.g. MFC / Qt), and without using GLUT? 【发布时间】:2014-08-19 17:07:30 【问题描述】:我主要是按照红皮书第7版来学习基于glut的OpenGL。其他参考资料,例如蓝色的 OpenGL 圣经和在线教程,也是基于 glut 的。他们都需要将代码放在主函数中。我想知道如何在没有main函数的项目中使用OpenGL,例如MFC或Qt项目,而不使用glut?
【问题讨论】:
当我发布这个问题时,我有两个问题。首先是如何在没有main函数的项目中使用OpenGL,例如在MFC或Qt项目中。另一个是如何在不使用 GLUT 的情况下使用 OpenGL。问题已编辑。第一个问题并不明显,因为大多数教程都是基于一个 main 函数。 【参考方案1】:基本的答案是,GLUT 让您的生活比滚动自己的游戏循环(负责更新和监控事件侦听器)更容易。几年前,我使用 OpenGL 编写了一个避免 GLUT 的游戏 - see here。
例如,不得不使用 DirectInput 来处理键盘事件,这让我非常头疼,但我确实对所有事情有了更多的控制权。
最后一点,GLUT 非常老旧,缺少一些非常重要的功能,可以让您干净地退出游戏循环。 FreeGLUT 如果你真的想专注于学习 OpenGL 而没有我刚才描述的所有其他令人担忧的东西,那么它就可以做到了。
关于 Qt 的细节,这可能会对您有所帮助。
【讨论】:
感谢 ButchDean。我现在只了解如何在使用 glut/freeglut 的主函数中使用 OpenGL(如红皮书所示)。我正在开发一个由其他人准备的 MFC 项目,现在我需要在项目中添加一些动画。问题是项目没有使用 glut 并且项目的 OpenGL 部分被封装。我现在可以定义显示函数,但我不知道它们是如何被调用的。这就是为什么我需要研究上面发布的这两个问题。 如果我是你,考虑到你是 OpenGL 的新手,我会花时间理解代码,可能会从头开始重写代码,看看发生了什么并从中获取那里。你会惊讶于它的启发性! 我试图查看 glutDisplayFunc() 的源代码,看看它到底做了什么,但我找不到代码。简单地说,我现在定义了一个 display() 函数。如果我使用 glut,我可以简单地在 main() 函数中使用“glutDisplayFunc(display)”来显示内容。如果我不使用 glutDisplayFunc(),我该怎么办? 说实话很容易找到答案,比如这里:opengl.org/wiki/Creating_an_OpenGL_Context_(WGL)。设置完成后,您将执行绘图操作。 另请查看***.com/questions/3344583/…以上是关于如何在没有主要功能(例如 MFC / Qt)且不使用 GLUT 的项目中使用 OpenGL?的主要内容,如果未能解决你的问题,请参考以下文章
图形界面库Windows Forms MFC WTL WxWidgets Qt GTK 综合比较