首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏引擎中SDL + Qt + OpenGL的几点思考

游戏引擎中SDL + Qt + OpenGL的几点思考
EN

Stack Overflow用户
提问于 2012-03-09 20:35:00
回答 2查看 11.5K关注 0票数 4

我一直在研究我正在开发的游戏引擎的理想部件。一开始,我试着从零开始编写所有东西,只使用少量的本地库,如Win32、X11、OpenGL、Glew、GLX等等。

然后我意识到这将永远只需要一个游戏引擎。

因此,我正在考虑使用OpenGL + SDL + Qt编写一个游戏引擎。我之所以想在所有这一切中使用SDL,是因为它的上下文创建和OpenGL初始化支持。我喜欢Qt的实现(大部分情况下),但老实说,我更喜欢SDL。我的主要想法是使用Qt进行严格的GUI开发(例如游戏中的菜单、调试控制台、HUD呈现等等)。

我想知道这是否是一个好方法,如果不是,他们是否有更好的方法?如果这是一种很好的方法,那么什么才是实现的最佳方式,而不是引擎本身,而是两者的集成。我读到了一个类似的问题,和一个正在写物理仿真器的人打交道,实际上,他试图完成同样的事情,但是他使用的是线程,我不确定我是否会使用,或者不完全坦率地说。

尽管如此,据我所知,游戏引擎和物理模拟器之间似乎有很大的区别,我想确切地知道我要做的是什么。

--关于的一些想法

  • 我喜欢普通的OpenGL实现,而不是Qt的,主要是因为我觉得自己有更多的控制权。
  • 我更喜欢对主循环有更多的控制,因此我为什么要使用类似SDL的东西而不是Qt的实现--问题是考虑到两者有多大的不同,我不确定这是否真的被推荐了。

总之,我相信有些人会告诉我,只要使用QWidget就行了。问题是,总的来说,我对图形编程还比较陌生,并且觉得通过原始opengl学习原始API是最好的方法。如果我错了,那么我肯定想知道。

我知道这个问题范围很广,不那么具体,但我确实需要关于这个问题的建议,并希望这能帮助另一个希望做类似事情的开发人员。

就客观性而言,这似乎是一个很难讨论的话题,所以我将从灵活性和原始opengl + GUI支持方面说明标准,因为这才是我真正需要的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-10 00:25:14

,然后我意识到,这将永远只需要一个游戏引擎。

不正确。如果你有明确的目标或最终产品的规格,这不会是永远的。如果你不清楚你想要得到什么,那么它确实需要永远的时间。游戏引擎是由一个人或小团队编写的。其中一个例子是苏美拉顿。

你应该明白引擎不是游戏中最重要的部分。即使你有引擎,你仍然需要游戏资产-艺术,音乐,纹理,声音。获得它们比编写一个引擎要困难得多--因为很少有一个人能够做到这一点(所以你自己也无法做到这一点),他们的创造需要时间,而且也没有那么多免费的好资源。

我的主要想法是使用Qt进行严格的GUI开发

不是个好主意。虽然可以将Qt集成到SDL中,并使用信号/插槽(通过提供自定义事件循环与SDL事件循环相结合),但这样就无法在全屏应用程序中访问Qt小部件。全屏阻止一切,所以对于游戏中的GUI使用Qt 4,很可能需要为SDL设计自己的基于Qt的GUI框架。虽然这是可以做到的,但这需要时间。不过,如果应用程序不是全屏的话,您就不会遇到这个问题,但是Qt仍然不适合这个场景。将Qt4集成到SDL应用程序以访问QFont/QSharedPointer/QString和类似的“低级”类是有意义的,但是如果您计划集成QWidget,那么它就不值得了。理论上几乎没有什么可能的方法(我还没有尝试过)来使Qt提交并使其小部件在SDL屏幕中自己绘制,但我认为这是不值得的--解决方案要么太复杂,要么效率太低,或者会有严重的限制。

一个更现实的方法是坚持接吻原则。你不需要非常灵活的gui库来制作游戏中的GUI。你需要用几个按钮做一些看起来像窗口的东西,并表现得像那样。通常,这可以用纹理来解决,只有很少的动画区域--没有所有复杂的GUI框架。

我想知道这是不是个好方法,

将Qt4集成到SDL中以在SDL应用程序中使用QT4GUI并不是一种很好的方法,如果您的目标是将Qt4小部件无缝地集成到SDL窗口中绘制的场景中。

,如果不是,他们有什么更好的方法吗?

首先,您需要清楚地了解最终的应用程序。如果你对最终游戏没有一个很好的愿景,为它编写引擎将花费很长时间-因为你会浪费大量的时间来实现你并不真正需要的功能。

票数 6
EN

Stack Overflow用户

发布于 2012-03-09 22:33:21

因此,我正在考虑使用

+ SDL + Qt编写一个游戏引擎。

Qt和SDL不混合。Qt做SDL所做的所有事情,包括窗口和输入管理。但是Qt对于游戏来说是很糟糕的,因为它对您隐藏了事件循环。然而,对于游戏来说,你需要对事件循环进行简洁的控制。

我喜欢普通的OpenGL实现,而不是Qt的,主要是因为我觉得自己有更多的控制权。

没有“裸”OpenGL。无论如何,你都必须改进一个窗口,SDL似乎是一个合理的选择。顺便说一句:有一些特殊用途的图形用户界面库,基于OpenGL,用于游戏。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9640615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档