之前在某乎看到一篇帖子,原话记不清了,大致意思是:如果只是做个普通的Android码农,那Java够用;但如果你的理想比这个还要大一点,C++是你进阶的必备技能。
恰好之前有一点点C++ 基础,然后最近在公司业务上又涉及到openGL ,那就通过写篇帖子来学习总结一下在Android JNI 里编写一些openGL 的代码,权当一个入门吧...
1.入门必备
1.1 NDK
既然是NDK+openGL,那肯定要先了解一下这两个是什么。先简要的说下NDK(个人理解):
NDK(native development kit) 是一套工具集合,利用内置的交叉编译器通过 .mk 文件帮你把C/C++ 代码编译出适应各种 cpu 架构的 .so 库,通过 jni 标准你可以调用这些库里的方法,这样的好处是避免的多种cpu 架构的适配,把一些机密的代码用C/C++写进.so中也提高了安全性。
如果想要得到更加具体的信息,可以自行 google 这些关键字:NDK / JNI / Android.mk
1.2 openGL
openGL(open graphics library) 是一套跨平台跨语言的接口程序,是一个具有丰富的 2D/3D api的图形调用库.而openGL ES 是openGL 的 api 子集,针对嵌入式设备,如手机,pad 等。
本文中是在Android 上的Demo,用到的库当然是openGL ES(Version:ES 2.0)
1.3 Android 相关
在Android 上开发openGL ,还需补充一些Android 相关的知识,这里就不赘述了,要想讲通透会引申很多的知识点,具体可自行google 这些关键字:
Surface / SurfaceView / GLSurfaceVIew / SurfaceTexture / TextureVIew
2.编码