我一直在使用 glut 作为我的窗口处理程序来编写 opengl,最近我一直在考虑切换到备用窗口处理程序(如 wxWidgets 或 qt)是否有任何优势。
是否有任何重大差异,或者只是口味问题?由于 glut 为 opengl 编程提供了窗口处理功能之外的一些额外功能,将额外的工具包与 glut 相结合是否有意义?
我只能从使用 QT 的经验说:
一旦你设置了基本结构,那么它就是一个做你一直在做的事情的简单案例:例如,我目前正在处理的项目在窗口中嵌入了一个打开的 gl 小部件。
此小部件具有诸如 initializeGL、resize...paintGL 等功能。优点包括能够将变量从其他窗口/小部件等传递给 an东西需要一些更复杂的数学)
一旦您想要更复杂的控件和对话框等,您就需要摆脱过剩。
QT 有一个出色的openGL 小部件,在时事通讯中还有一篇有趣的文章,关于在 GL 上绘制控件以提供酷炫的 WPF 样式效果。
wxWidgets 还附带了一个opengl 示例 ,但我没有太多经验。
好吧 - 过剩是可以让原型运行的。
这取决于操作系统,但稍后您可能想要阻止屏幕保护程序启动,您可能想要禁用任务开关(虽然只有坏人这样做),您可能想要对断电事件做出反应。您可能会发现 glut 无法处理一个或另一个操作系统上的死键,或者,或者,或者......您可能想要摆脱它的原因有上千种。
它是一个框架,旨在使开始变得容易并完成您需要的 90% 的日常工作,但它永远无法做到 100%。您总是可以让自己陷入过剩或取消初始化代码,但有一天您会发现从头开始重新设计初始化代码并根据您的任务进行调整会更容易。
打开一个窗口并初始化 OpenGL 不是火箭科学。只要它对你有用,就使用过剩,但一旦它产生问题就摆脱它。它只需要你几个小时的时间,所以你不会失去太多。
对于一个玩具项目来说,过剩是要走的路。
SDL虽然不仅仅是一个窗口处理程序,但它会使 OpenGL 比原始 Win32 代码更容易使用。但是,我在 Qt、GTK 和 wxWidgets 方面的经验并不算太差……当然不会比 Win32 好多少,在这些情况下可能只是个人喜好问题。
如果您想对窗口和资源进行精细控制,我建议您避免使用像 GLUT 这样的小部件和包装器,但如果您只是在寻找开发速度,那么这些工具是理想的选择。