编辑: 是否有任何预先构建的库可以为我执行此操作,使用 SDL 或在 Window、Linux、Mac、iOS 和 Android 上运行?
目前,我不确定我改变上下文的方式是否是一个很好的设计,我还没有完全完成它。我真的很担心浪费我的时间。我正在使用 SDL 进行窗口管理和事件处理。
我目前在类中包装 SDL(特别是 SDL 2)来管理它。这些是我的课程以及他们的工作:
- Window - 描述一个窗口
- WindowContext - 描述 Window 的上下文(抽象类)
- WindowDelegate - 用于确定上下文何时更改、窗口何时打开/关闭等。
- WindowEventListener - 监听来自 Window 的事件(不确定我是否应该坚持轮询而不是回调函数)
无论如何,这是它如何工作的示例:
OglWindowContext* context = new OglWindowContext;
// change context's settings
Window window(ipoint2(), idimension2(640, 480), "Test Window",
Window::Resizeable, context, &windowListener,
NULL /* window delegate */);
while(window.isOpen())
{
window.processEvents(); // calls back events to the WindowEventListener
window.draw(); // calls the context's draw method
}
注意:ipoint2 是一个二维点
我可以通过调用中途更改上下文:
window.setContext(new Dx9Context); // or whatever context you would like
有没有更简单的方法,或者我应该说更有效的方法来做到这一点?