本文档目的是记录下从头搭建ndk开发opengl的全过程,以便后来者避免繁琐的准备过程。
以下过程以windows操作系统为例,所需程序默认安排在c盘
1、下载android sdk,安装在 C:\android-sdk-windows
2、下载android ndk,安装在 C:\android-ndk-r8b
3、下载Cygwin,需要1.7或更高版本。因为是在windows下开发,所以需要交叉编译,在其它平台下没有这种麻烦事。安装在C:\cygwin,安装完成后把C:\android-ndk-r8b移到C:\cygwin目录下
安装时,确保 gcc、make、awk三个程序是安装状态,gcc和make默认是不安装的。
另注:ndk r8及更高版本,支持windows下编译。
4、下载eclipse。
安装eclipse下的android sdk插件 adt。
安装eclipse下的c/c++插件cdt。
5、C:\cygwin\workspace(这个目录自己建立)。然后使用eclipse中的import功能,将ndk下的hello-gl2导入工程。
6、在ecliplse中配置ndk自动编译环境
直接参考网上的文章吧:http://blog.csdn.net/gengshenghong/article/details/6981590
以上完成后,编译发布报以下错误:
09-27 07:07:30.154: E/AndroidRuntime(658): FATAL EXCEPTION: GLThread 78
09-27 07:07:30.154: E/AndroidRuntime(658): java.lang.IllegalArgumentException: No configs match configSpec
09-27 07:07:30.154: E/AndroidRuntime(658): at com.android.gl2jni.GL2JNIView$ConfigChooser.chooseConfig(GL2JNIView.java:168)
09-27 07:07:30.154: E/AndroidRuntime(658): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1024)
09-27 07:07:30.154: E/AndroidRuntime(658): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1401)
09-27 07:07:30.154: E/AndroidRuntime(658): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
09-27 07:07:30.165: D/gralloc_goldfish(658): Emulator without GPU emulation detected.
NDK里的GL2JNIView.java的init函数里(大概102行)
// setEGLConfigChooser( translucent ?
// new ConfigChooser(8, 8, 8, 8, depth, stencil) :
// new ConfigChooser(5, 6, 5, 0, depth, stencil) );
setEGLConfigChooser(5, 6, 5, 0, 0, 0); 就可以跑起来了。
但是继续报以下错误:
09-27 07:11:07.694: E/libEGL(707): called unimplemented OpenGL ES API
7、在preference->c/c++->Build->Environment中添加
INCLUDE 指向ndk中的include目录
好像不起作用,最后在项目下新建了一个文件夹,然后引用到include目录来解决掉的。
8、需要把工程转为c/c++工程。
9、自己准备好的一个ndk opengles 1.0基础程序。
1 条评论。