【问题标题】:Cross-platform development with GLKit?使用 GLKit 进行跨平台开发?
【发布时间】:2012-02-25 09:55:45
【问题描述】:
我刚刚安装了当前的 Xcode 4 版本并实现了新的“GLKit”API,该 API 也用于 iOS 的 OpenGL 模板中。所以,我想为 iOS、Mac 和 Windows 开发一个跨平台游戏。 GLKit 似乎在可移植性方面倒退了一步,但 GLKit 功能(特别是异步纹理加载)有很大的好处...
如何使用 GLKit 开发跨平台游戏?我需要写两次任何图形代码,对吧?还是有类似 Windows 的 GLKit 实现?
欢迎任何想法、解决方法、代码设计建议(如何将 GLKit 代码与其他组件分开?) - 谢谢!
【问题讨论】:
标签:
iphone
cross-platform
opengl-es-2.0
glkit
【解决方案1】:
我想不出 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 差异花费更多的时间。