Kal*_*ina 10 c++ graphics performance android 2d
一些谷歌搜索让我相信C++是实时2D图形编程的最佳语言,但由于Android是基于Java的,这仍然是最好的选择吗?或者我们必须使用NDK减速或其他什么事实?我的程序也有很多科学计算,我知道C++最好/最快...
我以前从未对Android做过任何事情,所以我现在真的很无助.如果我只是错误的方式,请给我其他建议...我遇到的其他一些词汇是OpenGL(我有经验,但更多的是3D,对吗?)和Canvas(不要相当得到这个)?如果我能够访问类似GPU的功能,那就太棒了.
aar*_*ell 15
Android应用程序是用Java编写的,但是Android NDK允许您用C或C++编写程序的性能关键部分.来自Android NDK 网站,
Android NDK是Android SDK的配套工具,可让您使用本机代码构建应用的性能关键部分.它提供了标头和库,允许您在使用C或C++编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等.
也就是说,适当地使用NDK很可能不会减慢你的程序.
OpenGL适用于3D和2D图形 - 如果您只对2D感兴趣,则需要使用正交投影 - 请参阅glOrtho以获取更多信息.在Android的画布,在另一方面,是绘制光栅图形到屏幕上的Java方法.它将允许您渲染2D图形,但速度较慢(并且Android垃圾收集器频繁中断).
请记住,如果要在编写时使用C++,则不存在可用的STL实现.然而,有非官方端口提供大部分功能.STLPort是我尝试过的一个成功案例.移动代码,C/C++的最大的原因是因为从Android Java垃圾收集中断的-如果你不是太小心你的代码,它会打断你的程序中经常清理你遗落周围的物体.在实践中,这可以极大地限制游戏或模拟帧率.
总而言之,我强烈建议你研究一下正在出现的少数开源安卓游戏引擎之一.我尝试过的最好的是libGDX.它处理所有杂乱的NDK细节,并允许您纯粹用Java编写游戏/模拟代码.它以本机代码自动运行游戏引擎中性能最重要的部分,以便在Java中轻松编码,从而获得最快的性能.最重要的是,您可以编写一次应用程序代码,并将其自动运行在Windows,Linux,OSX和Android上 - 这使得测试应用程序比使用Android模拟器更容易.
如果你真的想看看NDK的自己,或者需要有什么样的OpenGL是做真的很好的控制,我建议你下载的Android SDK和NDK,使Eclipse设置,然后用NDK样品开始.那里有一个OpenGL演示,向您展示如何设置所有内容.另一个好的起点是SpinningCube谷歌项目.
编辑:我不是,如果你的意思是"GPU般的能力"真正肯定,但libGDX,你可以编译下的OpenGL ES 2.0顶点和片段着色器 - 您可以使用此使用设备的GPU运行尴尬的并行代码.
你假设Android系统太慢而无法做你想做的事情,没有任何数据可以支持它.用Java编写一些测试,并首先测试性能.您不希望在没有任何依据的情况下对性能做出假设.
过早优化是万恶之源. - Knuth