使用GLKit进行跨平台开发?

6
我刚刚安装了最新的Xcode 4版本,并意识到新的“GLKit” API也用于iOS的OpenGL模板。因此,我想要为iOS、Mac和Windows开发一个跨平台游戏。GLKit在可移植性方面似乎是一步退步,但是GLKit的特性(特别是异步纹理加载)是非常有益的。
我如何使用GLKit开发跨平台游戏?我需要编写两次图形代码,对吗?或者Windows是否有GLKit实现?
任何想法、解决方法、代码设计建议(如何将GLKit代码与其他组件分离?)都受到欢迎 - 谢谢!
1个回答

5

我想不出任何GLKit所做的事情,不能被非GLKit代码替代。它可以通过抽象一些OpenGL ES 2.0任务使其更简单,但它并没有做任何独特的事情。从我尝试过的来看,它最接近拥有某些无法在其他地方复制的东西的是加速的矩阵和向量数学函数,但即使这些也可以用一些Accelerate或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差异需要更多的时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接