【问题标题】:Game engine map editor. SDL->wxWidgets游戏引擎地图编辑器。 SDL->wxWidgets
【发布时间】:2010-11-21 01:58:55
【问题描述】:

我一直在编写一个 OpenGL 游戏引擎,它使用 SDL 进行所有窗口管理和可移植性。我想使用完整的引擎创建一个关卡编辑器。除了输入之外,引擎本身与 SDL 完全不相关。我想将 wxWidgets 用于 GUI,并且我一直在查看一些非常简单易懂的 OpenGL 示例。

尝试将 SDL 与 wxWidgets 集成并同时使用或在它们之间切换以用于不同的应用程序会更简单吗?在两个系统之间切换的最佳方式是什么?

【问题讨论】:

    标签: c++ opengl wxwidgets sdl


    【解决方案1】:

    很可能每个应用程序使用一个 GUI API 比将两者合并在一起更容易(即更容易在游戏中使用 SDL/OpenGL 并在关卡编辑器中使用 wxWidgets/OpenGL)。通常这些库不是为了合并在一起或与其他库一起使用而构建的,因此几乎不可能在一个程序中同时使用它们。例如,我对 SDL 了解不多,但是一个正确编写的 wxWidgets 程序使用内部宏来生成 int main() 并启动它的消息泵等。如果 SDL 要求您做同样的事情(在您的 int main() 中运行一些特殊的初始化代码或允许 SDL 生成自己的 int main()),您将无法在不破坏 wxWidgets 的情况下正确初始化 SDL,反之亦然。同样,我不知道这两个库之间是否真的存在这种特殊的冲突,但这只是两者如何相互作用和相互干扰的一个例子。

    也就是说,在一个完美的世界中,最好选择其中一个库并将其同时用于您的引擎和关卡编辑器(即使用 SDL/OpenGL 作为引擎和编辑器,或使用 wxWidgets/OpenGL 作为引擎和编辑器),但如果您乐于维护两个不同的 API 代码库,那么如果它没有损坏,请不要修复它。

    【讨论】:

    • SDL 不使用 main() 宏,可以部分初始化,但我猜消息循环会重叠。 (SDL 要求您实现自己的循环。)
    • 是的,如果不在 int main() 中,那么在消息循环中会出现问题。 wxWidgets 创建自己的本地消息循环,对最终用户完全隐藏;稍微修改一下就会很容易破坏库。
    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2010-12-29
    • 2017-03-31
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多