我刚刚安装了当前的Xcode 4版本,并实现了也在iOS的OpenGL模板中使用的新的“GLKit” API。因此,我想为iOS,Mac和Windows开发一款跨平台游戏。 GLKit在可移植性方面似乎倒退了一步,但GLKit功能(特别是异步纹理加载)具有很大的优势...
如何使用GLKit开发跨平台游戏?我需要写两次grapics代码,对不对?还是有类似Windows的GLKit实现的东西?
欢迎提供任何想法,解决方法,代码设计建议(如何将GLKit代码与其他组件区分开?)-谢谢!
最佳答案
我想不到GLKit所做的任何事情都不能由非GLKit代码代替。通过将它们抽象化,可以使某些OpenGL ES 2.0任务变得更简单,但它并没有做任何独特的事情。与您无法复制到其他地方(从我已经修补过的东西)中,最接近的是它提供的加速矩阵和矢量数学函数,但是即使是那些,也可以用一点Accelerate或NEON代码代替。
虽然我想在我的应用程序中使用GLKit,但我仍然支持它们的iOS 4.2,而后者没有可用的GLKit。目前没有什么可以做的,因为我无法使用GLKit,我只需要编写更多代码来处理诸如 View 更新,纹理上传,矩阵数学等之类的事情。这里有很多文档和示例对于这些操作,因此在实现它们时,您不必担心独自一人。
当试图使您的代码与Mac跨平台时,尤其是在Windows中,您将遇到比GLKit大得多的问题。桌面OpenGL和OpenGL ES在实现上有所不同,因此您需要注意将一个功能或内置变量替换为另一个功能的位置。 Mac上的CAOpenGLLayer和NSOpenGLView也与iOS上的CAEAGLLayer不同,并且AppKit总体上与UIKit不同。
Windows将面临更大的支持挑战,因为您将无法使用任何Cocoa框架,而且很有可能也不会使用Objective-C。这将比任何OpenGL/OpenGL ES差异花费更多的时间。