【问题标题】:Qt and OpenGL for game development用于游戏开发的 Qt 和 OpenGL
【发布时间】:2012-12-15 12:57:46
【问题描述】:

我有几个关于 Qt 的问题。

  1. 我已经知道 Qt 和 OpenGL 可以一起使用。在 我们在我的大学使用 GLUT 的那一刻(用于窗口和输入 管理)。我看到 Qt 能够做同样的事情。 有吗 使用 Qt 代替 GLUT 有什么缺点吗? (性能 明智)

  2. 我也知道 Qt 可用于构建游戏 GUI。我什至看到了 这个 3d GUI 示例WolfenQt。所以这是可能的。 但确实如此 如果您关心的话,将 Qt 用于游戏 GUI 是有意义的 性能?

【问题讨论】:

  • Windows 是否有 64 位版本的 glut?我相信它不再处于开发阶段,也不是开源的。 QT 是一个很好的跨平台工具包,目前仍在开发中。实在没有比较的理由。学校仍然使用 glut 是因为它是一个流行的 3D 编程教学库,而不是因为它提供了最好的性能。此外,大部分性能将来自 opengl 而不是小部件库。
  • @Codeguy007:有 FreeGLUT,它是开源的并且维护良好。是的,它有 Win64 版本。但是,我不建议为游戏推荐 GLUT。最好使用 SDL 或 GLFW。

标签: qt opengl


【解决方案1】:

Qt 与任何其他工具一样可能被滥用。但仅仅因为你使用 Qt 这并不意味着 OpenGL 的性能会受到影响。 OpenGL 并不关心它的上下文和它所绑定的可绘制对象是什么以及如何创建的。 Qt 最大的影响是它如何管理和传递事件;信号/槽机制。

【讨论】:

  • 为什么你会选择 GLFW 而不是 QT 来开发游戏?因为 QT 使用事件和 GLFW c 回调?
  • @MaikKlein:GLFW 不使用回调,SDL 也是如此(我认为您的意思是 GLUT,这是一个不同的框架)。它将整个事件循环放在您的手中。这正是您想要的游戏! Qt 传递信号,这些信号收集在主循环中的队列中,然后分派到它们连接的插槽。这使得延迟有点不可预测。在大多数情况下,您不会注意到,但有时……关键是,使用 GLFW 和 SDL,您可以精确控制事件管理、操作顺序和时间。使用 Qt,您不需要。
  • @datenwolf:事件和信号/槽通常是不相关的。几乎所有的信号/槽基本上都是对方法的调用,根本不经过事件循环。只有在多线程设置中才会涉及事件循环。因此,您的陈述会崩溃为“不要做太多事情,否则您的延迟会受到影响”,这对于任何框架都是如此。
  • @TobiasHunger:确实。然而,大多数游戏是多线程的,然后事情就变得有趣了;独立于使用的框架。
  • 使用一个线程进行窗口管理和自定义循环,在 Render() 之前调用 ProcessEvents() [基本上,编写自己的游戏循环] 允许您直接控制 Qt 的一个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多