6

我刚刚安装了当前的 Xcode 4 版本并实现了新的“GLKit”API,它也用于 iOS 的 OpenGL 模板中。所以,我想为 iOS、Mac 和 Windows 开发一个跨平台游戏。GLKit 似乎在可移植性方面倒退了一步,但 GLKit 功能(特别是异步纹理加载)有很大的好处......

如何使用 GLKit 开发跨平台游戏?我需要写两次任何图形代码,对吧?或者是否有类似 Windows 的 GLKit 实现?

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

4

1 回答 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 差异花费更多的时间。

于 2012-02-03T18:48:29.380 回答