繁体   English   中英

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

[英]Is OpenGL ES suitable for performing skeletal animations?

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

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

你可能已经得到了它 - 我还没有为移动平台编程。 因此,欢迎提出一些一般性建议。

是的,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上执行顶点蒙皮的代码。 您可以在此处获取本书的示例代码,包括此蒙皮的演示。

iOS上通过Objective-C ++支持C ++ ,您可以在Objective-C中设置特定于平台的UI元素,然后在C ++中完成所有后端和渲染逻辑。 菲利普再次在他的书中做到了这一点,你可以在他的源代码示例应用程序中看到他如何构建它。 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在这方面还有更多选择。

简而言之:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM