2012-02-02 148 views
6

我刚刚安装了当前的Xcode 4版本,并且实现了也用于iOS的OpenGL模板的新“GLKit”API。所以,我想开发一个适用于iOS的跨平台游戏,Windows的Mac &。 GLKit在可移植性方面似乎有所退步,但GLKit特性(特别是异步纹理加载)非常有用...使用GLKit进行跨平台开发?

我该如何用GLKit开发交叉平台游戏?我需要两次写任何图形代码,对吧?还是有像GLKit实现的Windows?

欢迎任何想法,解决方法,代码设计建议(如何将GLKit代码与其他组件分开?),谢谢!

回答

5

我想不出GLKit所做的任何不能被非GLKit代码取代的东西。它可以使一些OpenGL ES 2.0任务更加简单,只需将它们从你身边抽象出来,但它不会做任何独特的事情。最接近它的东西你无法在其他地方复制(从我所修饰的)是它提供的加速矩阵和向量数学函数,但即使这些函数可以用一个小的加速或NEON代码来代替。

虽然我想在我的应用程序中使用GLKit,但我仍然支持iOS 4.2,它们没有GLKit可用。没有什么是我目前无法使用的,因为我不能使用GLKit,我只需要编写更多的代码来处理视图更新,纹理上传,矩阵数学等等。有很多文档和示例对于这些操作,所以在执行这些操作时,您不必担心自己处于独立状态。

当您尝试使代码与Mac交叉平台时,您将面临比GLKit更大的问题,尤其是Windows。桌面OpenGL和OpenGL ES在其实现方面有一些差异,您需要了解将某个函数或内置变量替换为另一个函数的位置。 Mac上的CAOpenGLLayer和NSOpenGLView也与iOS上的CAEAGLLayer不同,AppKit与UIKit完全不同。

Windows将更加难以支持,因为您将无法使用任何Cocoa框架,并且很可能无法使用Objective-C。这将比任何OpenGL/OpenGL ES差异花费更多的时间。