
『Android Studio NDK』提供『EGL』連接『OpenGL』, 『EGL』被設計出來,作爲 OpenGL 和原生窗口系統之間的橋梁『Microsoft Windows』『Mac OS X Quatz』差異.用統壹接口同原生視窗聯接. 跨平臺API更易於移值. 所以OpenGL比DirectX更得人鐘意.
- 使用NDK
- 編譯OpenGL ES
- 載入共享庫”app.so”,『app』系你庫名.
static {
System.loadLibrary(“app”); } |
- 首先修改布局『xml』添加『SurfaceView』,而非『GLSurfaceView』.
<android.view.SurfaceView
android:layout_width=”match_parent” android:layout_height=”match_parent” android:id=”@+id/surface_view” /> |
- 係『xml』添加『全屏樣式』
<style name=”FullscreenTheme” parent=”android:Theme.NoTitleBar.Fullscreen” > |
- 係『java』加『android.view.SurfaceHolder.Callback』用蒞行『SurfaceView』『創建』『改變』『銷毀』
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) { new Thread(this).start();//渲染,啟動線程 Runnable.run() } |
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { } |
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) { } |
- 係『java』加『Runnable』用蒞行OpenGL 渲染線程, 『EGL』同『OpenGL』代碼需擺同壹綫程. 唔系eglSwapBuffers()返回EGL_BAD_SURFACE.
@Override
public void run() { init( ); while (true) { update(0); } } |
- 係『xml』為Google Play加版本過濾
<uses-sdk android:minSdkVersion=”9″ android:targetSdkVersion=”19″ /> |
- 係『txt』穩庫文檔
find_library( OpenGL-lib libGLESv1_CM.so ) |
find_library( OpenEGL-lib libEGL.so ) |
find_library( Android-lib libandroid.so ) |
- 係『txt』連連接庫文檔
target_link_libraries(app
${OpenGL-lib} ${OpenEGL-lib} ${Android-lib}) |
- 加入頭文檔
#include <GLES/gl.h> | 標準OpenGL頭文檔 |
#include <GLES/glext.h> | OpenGL架餐庫 |
#include <EGL/egl.h> | EGL頭文檔 |
#include <EGL/eglext.h> | EGL架餐庫 |
#include <android/native_window_jni.h> | 原生視窗庫 |
你必須 登入 才能發表評論。