Android NDK開發包中,在sample文件夾下,有一個使用OpenGL ES 2.0的范例——hello-gl2。
它為我們展示了,如何通過Android NDK,調用底層OpenGL ES庫來渲染界面。
1、導入項目
打開Eclipse,New->Project...,選擇Android Project from Existing Code,點擊Next下一步
Import Projects,在Root Directory:欄,點擊按鈕Browser瀏覽文件夾,選擇Android NDK根目錄/samples/hello-gl2,點擊Finish導入項目
成功導入項目后,會在Package Explorer中顯示該項目。右鍵->Android Tools->Add Native Support...,點擊Finish完成。該項目就被從一個Java項目轉成一個C/C++項目了。
在Package Explorer中選擇該項目,右鍵->Build Project,生成在libs目錄下生成需要的.so文件。
運行,如圖所示,綠色的等腰三角形和從白至黑不斷變化的背景:
2、程序結構
Java文件:GL2JNIActivity.java,GL2JNILib.java和GL2JNIView.java
C/C++文件:gl_code.cpp
make文件:Android.mk
說明:
GL2JNIActivity作為整個應用的主Activity,設置GL2JNIView為它的Content View。
GL2JNIView是GLSurfaceView的子類,GLSurfaceView是Android用於OpenGL ES渲染的視圖。
GLSurfaceView: An implementation of SurfaceView that uses the dedicated surface for displaying OpenGL rendering.
官方文檔:http://developer.android.com/reference/android/opengl/GLSurfaceView.html
GL2JNIView執行了OpenGL ES初始化操作,並調用GL2JNILib類中的public native方法進行渲染。
GL2JNILib加載.so共享庫,包裝了native方法,通過JNI調用gl_code.cpp的方法,執行實際的OpenGL ES渲染操作。