OpenGL ES适合执行骨骼动画吗?

5
我需要为移动平台启动一个3D项目,首要目标是骨骼动画。我考虑使用OpenGL ES和C++来解决问题。以下是一些问题:
  1. OpenGL ES能否稳定地处理骨骼动画(包括蒙皮着色器)?
  2. 广泛支持哪些移动平台,最受欢迎的是哪些?例如,iPad是否支持?
  3. 这样做是否可行,我的计算能力是否足够?
  4. 是否值得使用XNA数学库,因为它具有SIMD优化(尽管我真的不确定移动平台是否支持SIMD,但谁知道呢...)。
  5. 使用C++是否好?如果是,则应选择哪个编译器进行开发和测试?此外,我不知道移动平台使用哪些编译器?
正如你所了解的 - 我从未为移动平台编程过。因此,欢迎一些通用建议。

太过宽泛了。而且你本可以很容易地查找到许多这些细节,比如iPad和OpenGL ES以及主要的移动平台使用的语言/编译器。 - YXD
2个回答

7
是的,OpenGL ES 2.0 可以很好地处理骨骼动画的顶点蒙皮。OpenGL ES 1.1 使用固定功能管线,没有着色器,因此在旧API中更难实现这一点,但2.0增加了对着色器的支持。OpenGL ES 2.0 存在于所有已发货的iOS设备(包括 iPhone 3G S及以上版本和两款iPad),几乎所有Android设备上也都有(我只找到了几款非常低端的手机没有)。Windows Phone 7似乎不支持OpenGL ES,但我相信BlackBerry支持。
如果您对这个感兴趣,我强烈推荐阅读Philip Rideout的书 "iPhone 3D Programming"。虽然标题中有 "iPhone",但他在书中几乎所有的代码都使用通用的C++,因此它应该能很好地转换到其他平台,并且应该很容易理解。他甚至在 "优化" 章节中有一个用于在OpenGL ES 2.0甚至1.1上执行顶点蒙皮的代码部分。您可以从这里获取该书的示例代码,包括这种蒙皮的演示。

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

我听说过一些人通过在CPU上执行变换(在iOS上可以使用加速框架)来获得小顶点集的略微更好的性能,但对于更大的几何体,顶点着色器可能会更快。我在移动设备上使用的PowerVR GPU比您想象的要强大得多,特别是在iPad 2中发货的新型号。

你需要使用Xcode集成开发环境,其中包括GCC或LLVM编译器以针对iOS设备进行编译。但我相信在这方面,Android有更多的选择。

1
一个非常小的补充:在iOS设备上,OpenGL ES 1.1支持矩阵调色板扩展(http://www.khronos.org/registry/gles/extensions/OES/OES_matrix_palette.txt),可用于顶点蒙皮。我不确定其他平台是否支持。 - Tommy
@Tommy - 很好的观点。我在看了Philip的皮肤OpenGL ES 1.1示例代码后就想到了这一点。 - Brad Larson

2

简而言之:

  1. 当然可以,为什么不行呢?
  2. 嗯,也可以吧。还有别的选择吗?绝对不能用DirectX。
  3. 嗯,也可以吧。但要看你还想做什么。
  4. 不行,至少不只是因为SIMD,因为我认为它在移动平台上受支持程度不高,至少不是XNA所优化的SIMD指令。
  5. 可以啊,为什么不行呢?我认为大部分iOS应用都使用Objective-C,但也应该有C++编译器。就像我一样,你可以向谷歌求助,因为我也没有移动开发经验。

我觉得我被误解了 - 我在PC平台上有很好的OpenGL经验,但是对于OpenGL ES或一般的移动平台编程完全没有经验 :) - Alexander Shukaev
好的,那我抱歉,我改了它。但是我认为我的答案仍然适用。 - Christian Rau

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