我以前从来没有做过任何事情,所以我真的很无奈.如果我正在做错误的方法,请给我其他建议…我遇到的其他一些词汇是OpenGL(我有经验,但更重要的是3D,对吗?)和Canvas(不要相当得到这个)?如果我能够访问类似GPU的功能,那将是巨大的.
解决方法
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编写您的游戏/模拟.它以本机代码自动运行游戏引擎的性能很重的部分,以便在Java中轻松编写代码以获得最快的性能.最重要的是,您可以编写一次应用程序代码,并在Windows,Linux,OSX和Android上自动运行,这使得测试应用程序比使用Android Emulator容易得多.
如果您真的想自己查看NDK,或者需要对OpenGL正在做的很好的控制,那么建议您下载Android SDK和NDK,然后再开始使用NDK样本.有一个OpenGL演示,向您展示如何设置所有内容.另一个好的起点就是SpinningCube的google项目.
编辑:我不太确定“像GPU这样的功能”是什么意思,但是使用libGDX,您可以在OpenGL ES 2.0下编译顶点和片段着色器,您可以使用该设备在GPU中运行尴尬的并行代码.