c++ - OpenGL ES 是否适合执行骨骼动画?

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

我必须为移动平台启动一个 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,但我相信 BlackBerry 支持。

如果您对此感兴趣,我强烈建议您阅读 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++ 中执行所有后端和渲染逻辑。同样,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 在这方面有更多选择。

关于c++ - OpenGL ES 是否适合执行骨骼动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080757/

相关文章:

python - 尝试在 Visual Studio 2013-15 中从 C++ 执行 python 脚本时出现导入错误

android - OpenGL ES 2.0 : Rotating object around itself on Android

android - 同步相机预览和处理

c++ - 为什么在程序中调用这个拷贝构造函数?

c++ - QML Material Design 颜色不准确

javascript - 在移动设备上查看时如何将导航项移出屏幕

ios - 为什么/什么时候我必须点击两次才能触发 iOS 上的点击

android - OpenGL阴影贴图移动版不起作用

c++ - tr/regex c++ 库 - 正则表达式模式的定义

android - 如何在 Android 上调整图像大小?