C++ 游戏引擎地图编辑器。SDL->;wxWidgets

C++ 游戏引擎地图编辑器。SDL->;wxWidgets,c++,opengl,wxwidgets,sdl,C++,Opengl,Wxwidgets,Sdl,我已经写了一段时间的OpenGL游戏引擎,它使用SDL进行所有的窗口管理和可移植性。我想使用完整的引擎创建一个级别编辑器。除了输入之外,引擎本身根本不与SDL绑定。我想在GUI中使用wxWidgets,我一直在看一些非常简单易懂的OpenGL示例 尝试将SDL与wxWidgets集成并同时使用或在它们之间切换以在不同的应用程序中使用会更简单吗?在两个系统之间切换的最佳方式是什么?很可能每个应用程序使用一个GUI API会更容易,而不是将两者合并在一起(即,在游戏中更容易使用SDL/OpenGL,

我已经写了一段时间的OpenGL游戏引擎,它使用SDL进行所有的窗口管理和可移植性。我想使用完整的引擎创建一个级别编辑器。除了输入之外,引擎本身根本不与SDL绑定。我想在GUI中使用wxWidgets,我一直在看一些非常简单易懂的OpenGL示例


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

很可能每个应用程序使用一个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创建自己的本地消息循环,对最终用户完全隐藏;即使稍微修改它,也很容易破坏库。