5

我必须为移动平台启动一个 3D 项目。首先,我想概述一下主要目标——骨骼动画。至于解决方案,我正在考虑 OpenGL ES 和 C++。所以问题是:

  1. OpenGL ES 是否足够强大以处理骨骼动画(包括那些蒙皮着色器)
  2. OpenGL ES 是否在移动平台上得到广泛支持,最著名的有哪些?(例如,是否支持 iPad?)
  3. 无论如何这可能吗,我的意思是我有足够的计算能力吗?
  4. 是否值得使用 XNA 数学库,因为它的 SIMD 优化(虽然我真的不确定移动平台是否支持 SIMD,但谁知道......)。
  5. 用 C++ 来做这件事好吗?如果是,那么我应该选择哪个编译器进行开发和测试?此外,我不知道移动平台使用了哪些编译器?

你可能已经明白了——我还没有为移动平台编程过。因此,欢迎提出一些一般性建议。

4

2 回答 2

7

是的,OpenGL ES 2.0 可以很好地处理骨骼动画的顶点蒙皮。OpenGL ES 1.1 使用固定功能管道,没有着色器,因此在旧 API 中更难做到这一点,但 2.0 增加了对着色器的支持。OpenGL ES 2.0 出现在所有的 iOS 设备上(iPhone 3GS 和更新的设备都支持它,包括 iPad),以及几乎所有的 Android 设备(我只能找到几个不支持的低端手机)。Windows Phone 7 似乎不支持 OpenGL ES,但我相信 BlackBerry 支持。

如果您对此感兴趣,我强烈建议您阅读 Philip Rideout 的书《iPhone 3D 编程》。虽然标题中有“iPhone”,但他对书中几乎所有的代码都使用了通用 C++,所以它应该可以很好地翻译到其他平台,并且应该很容易让你理解。他甚至在“优化”一章中有一节包含在 OpenGL ES 2.0 甚至 1.1 上执行顶点蒙皮的代码。您可以在此处获取本书的示例代码,包括此皮肤的演示。

iOS 通过 Objective-C++ 支持 C++,您可以在 Objective-C 中设置特定于平台的 UI 元素,然后在 C++ 中执行所有后端和渲染逻辑。再一次,Philip 在他的书中这样做了,你可以在他的源代码示例应用程序中看到他是如何构建它的。Imagination Technologies 的人员还在他们的PowerVR SDK中建立了一些与平台无关的脚手架,一些人用它来快速启动他们的 3-D 渲染并在移动设备上运行。该 SDK 中还有一些关于从 OpenGL 迁移到 OpenGL ES 以及在这些 GPU 上执行各种效果的精彩文档。

我听说有些人通过在 CPU 上执行转换(在 iOS 上可以使用 Accelerate 框架来完成),对小型顶点集的性能稍好一些,但我想顶点着色器对于较大的几何图形会快得多。我在移动设备中使用过的 PowerVR GPU 比你想象的要强大得多,尤其是 iPad 2 中的新 GPU。

您需要使用 Xcode IDE,以及它的 GCC 或 LLVM 编译器来定位 iOS 设备,但我相信 Android 在这方面有更多选择。

于 2011-05-22T14:48:50.593 回答
2

简而言之:

  1. 是的当然。为什么不?
  2. 是的,我想。还有什么?DirectX 绝对不是。
  3. 是的,我想。但取决于您还想做什么。
  4. 不,至少不仅仅是因为 SIMD,因为我认为它在移动平台上不受太多支持,至少 SIMD 指令 XNA 已针对它进行了优化。
  5. 是的,为什么不?我认为 i...s 主要使用 Objective-C,但也应该有 C++ 的编译器。只是问谷歌,因为我也没有任何移动经验。
于 2011-05-21T14:04:54.090 回答