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

时间:2011-05-21 09:08:02

标签: c++ mobile opengl-es skeletal-animation

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

  1. OpenGL ES是否足以处理骨架动画(包括那些蒙皮着色器)
  2. OpenGL ES是否在移动平台上得到广泛支持,哪些是最着名的? (例如,支持iPad吗?)
  3. 无论如何,这是否可行,我的意思是我有足够的计算能力吗?
  4. 是否值得使用XNA数学库,因为它的SIMD优化(虽然我真的不确定移动平台上是否支持SIMD,但谁知道......)。
  5. 为此使用C ++是否合适?如果是,那么我应该选择哪个编译器进行开发和测试?而且,我不知道什么编译器用于移动平台?
  6. 正如您可能已经得到的那样 - 我还没有为移动平台编程。因此,欢迎提出一些一般性建议。

2 个答案:

答案 0 :(得分: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,但我相信黑莓手机。

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

C ++是supported on iOS through Objective-C++,您可以在Objective-C中设置特定于平台的UI元素,然后在C ++中完成所有后端和渲染逻辑。菲利普再次在他的书中做到了这一点,你可以在他的源代码示例应用程序中看到他如何构建它。 Imagination Technologies的人们还在他们的PowerVR SDK中建立了一些与平台无关的脚手架,有些人已经用它来快速在移动设备上进行3D渲染和运行。另外在该SDK中还有一些关于从OpenGL迁移到OpenGL ES以及在这些GPU上执行各种效果的优秀文档。

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

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

答案 1 :(得分:2)

简而言之:

  1. 是的,当然。为什么不呢?
  2. 是的,我想。还有什么? DirectX绝对没有。
  3. 是的,我想。但取决于你还想做什么。
  4. 不,至少不仅仅是因为SIMD,因为我认为它在移动平台上不太受支持,至少SIMD指令XNA是针对优化的。
  5. 是的,为什么不呢?我认为我...主要使用Objective-C,但也应该有C ++的编译器。请问google,因为我也没有任何移动体验。