微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – Android上实时图形编程的最佳语言是什么?

有些谷歌搜索引导我相信C是实时2D图形编程的最佳语言,但是由于 Android是基于Java的,那还是最好的选择?还是我们这个事实,我不得不使用NDK来减慢或者什么?我的程序也有很多科学计算,我知道C是最好的/最快的…

我以前从来没有做过任何事情,所以我真的很无奈.如果我正在做错误方法,请给我其他建议…我遇到的其他一些词汇是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编写您的游戏/模拟.它以本机代码自动运行游戏引擎的性能很重的部分,以便在Java中轻松编写代码以获得最快的性能.最重要的是,您可以编写一次应用程序代码,并在Windows,Linux,OSX和Android上自动运行,这使得测试应用程序比使用Android Emulator容易得多.

如果您真的想自己查看NDK,或者需要对OpenGL正在做的很好的控制,那么建议您下载Android SDK和NDK,然后再开始使用NDK样本.有一个OpenGL演示,向您展示如何设置所有内容.另一个好的起点就是SpinningCube的google项目.

编辑:我不太确定“像GPU这样的功能”是什么意思,但是使用libGDX,您可以在OpenGL ES 2.0下编译顶点和片段着色器,您可以使用该设备在GPU中运行尴尬的并行代码.

原文地址:https://www.jb51.cc/c/112572.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐