修改 是否有任何预先构建的库为我做这个,要么使用SDL OR运行在Window,Linux,Mac,iOS和Android?
目前,我不确定我改变上下文的方式是不是很好的设计,我还没有完全完成它。我真的很担心浪费时间。我正在使用SDL进行窗口管理和事件处理。
我目前在类中包装SDL(特别是SDL 2)来管理它。这些是我的课程以及他们的工作:
无论如何,这是一个如何运作的例子:
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是2d点
我可以通过调用来改变上下文:
window.setContext(new Dx9Context); // or whatever context you would like
有没有更简单的方法,或者我应该说更有效的方法来做到这一点?
答案 0 :(得分:1)
在目前Windows的任何其他平台上切换渲染器没有多大意义,所以你对windows,linux,mac,ios和android支持的请求听起来很奇怪。也许你正在寻找一个可以帮助你一般移植的图书馆?
要实现使用一个渲染器或其他渲染器(opengl / d3d)运行,或者为了实现一般的可移植性,您需要实现某种可移植性层。
基本上,你可以从编写两个程序开始:一个在OpenGL中绘制一个旋转的立方体,另一个是完全独立的,与D3D相同。接下来,编写第三个程序,将它们组合在一起:
Windows上的D3D和OpenGL实际上可以被视为单独的平台,但您可以在应用程序启动期间选择一个或另一个 - 选择可能会影响渲染器和应用程序控制循环。
在运行期间切换也是完全可能的,但可能太麻烦,不值得。
您可能会注意到SDL实际上做了很多以上的事情。