我必须为移动平台启动3D项目。首先,我想概述主要目标 - 骨骼动画。至于解决方案,我正在考虑使用OpenGL ES和C ++。所以问题是:
正如您可能已经得到的那样 - 我还没有为移动平台编程。因此,欢迎提出一些一般性建议。
答案 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)
简而言之: