iphone - 使用 GLKit 进行跨平台开发?

标签 iphone cross-platform opengl-es-2.0 glkit

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

如何使用 GLKit 开发跨平台游戏?我需要编写任何图形代码两次,对吧?或者有类似 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 差异花费更多的时间。

关于iphone - 使用 GLKit 进行跨平台开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117517/

相关文章:

c++ - CMake 选项禁用特定平台特定文件的编译

java - 跨平台开发建议

opengl-es - 如何在左轴和右轴之间转换opengl投影矩阵?

iphone - 编辑时如何更改 UITextField 中的颜色

c++ - Win32中是否有C++跨平台 "named event like the "CreateEvent()”?

iphone - 你如何在 didSelectRowAtIndexPath 中使用 for 循环来最小化我的代码?

javascript - WebGL - 使用多个纹理时的条纹

java - 我可以在哪里更改着色器制服并调用 GL 函数?

iphone - touches移出自身 View

iphone - 如何将我的 UITableViewCells 存储在 NSMutableArray 中?