我正在开发一个小游戏引擎,我遇到了一个问题。
到目前为止,我有一个窗口类,它是Win32窗口的包装器。我还有一个窗口管理器类(它是一个单例类),用于管理窗口的创建和窗口消息的处理。然后我有一个engine类,它是迄今为止最重要的类,因为它是引擎的接口。这个引擎类包含主循环、direct3d设备以及创建和销毁它的代码。此引擎类还包含一个窗口类对象,该对象充当direct3d设备的主/主机窗口。
我的问题是引擎需要对一些窗口消息(如WM_SIZE或WM_ACTIVATEAPP)做出反应,但是消息处理程序是Widnow类的一部分,它是engine类下面的一个“级别”。我还认为我应该创建另一个类来封装引擎的渲染/图形,然后将该类添加到主引擎类中。
因此,我不确定是应该在窗口类中使用Graphics类,还是应该在Graphics类中使用Window类,还是应该将它们并排放在主引擎类中。
发布于 2011-08-04 03:14:20
你生活在一个事件驱动的世界里,所以使用事件。让您的窗口包装器提供游戏引擎可以挂钩和响应的事件。
发布于 2011-08-04 03:15:50
不要使控制游戏引擎如何与基础操作系统交互的对象成为engine对象的子对象。操作系统层应该驱动引擎,而不是反之亦然。
(顺便说一句,大多数引擎和程序员都搞错了。)
发布于 2011-08-04 03:42:30
你会有多个窗口吗?多显示器越来越多地用于各种游戏。
你会在一个窗口中运行多个图形吗?不太可能。对我来说,这意味着窗口应该是图形的,而不是相反。
https://stackoverflow.com/questions/6931892
复制相似问题