c++ - 在 Android 上进行实时图形编程的最佳语言是什么?

标签 c++ android performance graphics 2d

一些谷歌搜索让我相信 C++ 是实时 2D 图形编程的最佳语言,但由于 Android 是基于 Java 的,它仍然是最佳选择吗?或者我们必须使用 NDK 来减慢速度之类的事实?我的程序也有很多科学计算,我知道 C++ 是最好/最快的......

我以前从未对 Android 做过任何事情,所以我现在真的很无助。如果我只是以错误的方式去做,请给我其他建议......我遇到的其他一些词汇是 OpenGL(我有经验,但更多用于 3D,对吧?)和 Canvas(不要完全明白这个)?如果我能够获得类似 GPU 的功能,那就太好了。

最佳答案

Android 应用程序是用 Java 编写的,是的 - 但是 Android NDK 允许您用 C 或 C++ 编写程序的性能关键部分。来自 Android NDK website ,

The Android NDK is a companion tool to the Android SDK that lets you build performance-critical portions of your apps in native code. It provides headers and libraries that allow you to build activities, handle user input, use hardware sensors, access application resources, and more, when programming in C or C++.

也就是说,适本地使用 NDK 很可能不会降低您的程序速度。

OpenGL 适用于 3D 和 2D 图形 - 如果您只对 2D 感兴趣,您会想看看使用正交投影 - 参见 glOrtho了解更多信息。 Android Canvas另一方面, 是将光栅图形绘制到屏幕的 Java 方法。它可以让您渲染 2D 图形,但速度较慢(并且会经常被 Android 垃圾收集器中断)。

请记住,如果您想使用 C++,在撰写本文时,没有可用的 STL 实现。但是,有提供大部分功能的非官方端口。 STLPort是我尝试过的,并取得了一些成功。将代码移至 C/C++ 的最大原因是来自 Android Java 垃圾收集器的中断 - 如果您对代码不太小心,它会频繁中断您的程序以清理您遗留下来的对象。在实践中,这会极大地限制游戏或模拟帧速率。

综上所述,我强烈建议您研究一下正在出现的为数不多的开源 Android 游戏引擎之一。我试过的最好的是 libGDX .它会处理所有杂乱的 NDK 细节,并让您完全用 Java 编写游戏/模拟代码。它会自动以 native 代码运行游戏引擎的性能要求较高的部分,以通过轻松的 Java 编码获得尽可能快的性能。最重要的是,您只需编写一次应用程序代码,即可在 Windows、Linux、OSX 和 Android 上自动运行 - 这使得测试您的应用程序比使用 Android 模拟器容易得多。

如果您真的想亲自研究 NDK,或者需要对 OpenGL 的功能进行精细控制,我建议您下载 Android SDK 和 NDK,设置 Eclipse,然后从 NDK 示例开始.那里有一个 OpenGL 演示,向您展示如何设置所有内容。另一个好的起点是 SpinningCube谷歌项目。

编辑:我不太确定你所说的“类似 GPU 的功能”是什么意思,但是使用 libGDX,你可以在 OpenGL ES 2.0 下编译顶点和 fragment 着色器 - 你可以使用它来运行令人尴尬的并行代码设备的 GPU。

关于c++ - 在 Android 上进行实时图形编程的最佳语言是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6375383/

相关文章:

c++ - CVMat : sizes of input arguments do not match

c++ - 数组 C++ 中最常见的前 5 个

c++ - 读取文件并保存完全相同的文件c++

android - 带有水平进度条的启动画面

android - 调试和 Release模式的 SHA-1 证书是否不同?

c++ - 在 Visual Studio 中发布版本仍然更慢?

c# - MVC 和存储库模式数据效率

c++ - QT - 是否有将几张图片组合成一张的类(class)?

java - 错误 POLICY_NAME_POPULATION

c# - 我如何有效地搜索这个层次结构?