是的,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 在这方面有更多选择。