如何组织游戏引擎

时间:2011-08-03 19:08:11

标签: c++ oop winapi directx game-engine

我正在研究小型游戏引擎,但我遇到了问题。

到目前为止,我有一个窗口类,它是Win32窗口的包装器。我还有一个Window Manager类(它是一个单例类),它管理窗口的创建和Windows消息的处理。然后我有一个引擎类,这是迄今为止最重要的类,因为它是引擎的接口。此引擎类包含主循环和direct3d设备,以及用于创建和销毁它的代码。此引擎类还包含一个Window类对象,该对象充当direct3d设备的主/主窗口。

我的问题是引擎需要对某些Windows消息(例如WM_SIZE或WM_ACTIVATEAPP)作出反应,但消息处理程序是Widnow类的一部分,它是Engine类下面的“级别”。我还认为我应该创建另一个类来封装引擎的渲染/图形,然后将该类添加到主引擎类。

所以我不确定我是否应该在Window类中使用Graphics类,或者在Graphics类中使用Window类,或者在主Engine类中并排使用它们。

3 个答案:

答案 0 :(得分:4)

你生活在一个事件驱动的世界里,所以要使用事件。让您的窗口包装器提供游戏引擎可以挂钩并做出反应的事件。

答案 1 :(得分:1)

不要让控制游戏引擎如何与底层操作系统交互的对象成为引擎对象的子对象。操作系统层应该驱动引擎,反之亦然。

(顺便说一句,大多数引擎和程序员都错了。)

答案 2 :(得分:1)

你有多个Windows吗?越来越多的多显示器越来越多地用于各种游戏。

你会在一个窗口上运行多个图形吗?不太可能。这告诉我,Window应该是Graphics,而不是相反。