Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發教程之OpenGL ES基礎(一)

Android開發教程之OpenGL ES基礎(一)

編輯:Android開發實例

 一、設置OpenGL ES視圖

設置OpenGL視圖並不難,Android上也較簡單。我們一般只需要2個步驟。

GLSurfaceView

我們要為GLSurfaceView提供一個專門用於渲染的接口

public void  setRenderer(GLSurfaceView.Renderer renderer)

 

GLSurfaceView.Renderer

GLSurfaceView.Renderer是一個通用渲染接口。我們必須實現下面的三個抽象方法:

// 畫面創建

public void onSurfaceCreated(GL10 gl, EGLConfig config)

// 畫面繪制

public void onDrawFrame(GL10 gl)

// 畫面改變

public void onSurfaceChanged(GL10 gl, int width, int height)

onSurfaceCreated

在這裡我們主要進行一些初始化工作,比如對透視進行修正、設置清屏所用顏色等。

onDrawFrame

繪制當前畫面

onSurfaceChanged

當設備水平或者垂直變化時調用此方法,設置新的顯示比例

案例代碼:

  1. public class OpenGLDemo extends Activity { 
  2.     @Override 
  3.     public void onCreate(Bundle savedInstanceState) {  
  4.         GLSurfaceView view = new GLSurfaceView(this); 
  5.         view.setRenderer(new OpenGLRenderer()); 
  6.         setContentView(view); 
  7.     } 

實現renderer需要更多的設置

  1. public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
  2.         // 黑色背景 
  3.         gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); 
  4.         // 啟用陰影平滑(不是必須的) 
  5.         gl.glShadeModel(GL10.GL_SMOOTH); 
  6.         // 設置深度緩存 
  7.         gl.glClearDepthf(1.0f); 
  8.         // 啟用深度測試 
  9.         gl.glEnable(GL10.GL_DEPTH_TEST); 
  10.         // 所作深度測試的類型 
  11.         gl.glDepthFunc(GL10.GL_LEQUAL); 
  12.         // 對透視進行修正 
  13.         gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); 
  14.     } 
  15.  
  16.     public void onDrawFrame(GL10 gl) { 
  17.         // 清除屏幕和深度緩存 
  18.         gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
  19.     } 
  20.  
  21.     public void onSurfaceChanged(GL10 gl, int width, int height) { 
  22.         // 設置畫面的大小 
  23.         gl.glViewport(0, 0, width, height); 
  24.         // 設置投影矩陣 
  25.         gl.glMatrixMode(GL10.GL_PROJECTION); 
  26.         // 重置投影矩陣 
  27.         gl.glLoadIdentity(); 
  28.         // 設置畫面比例 
  29.         GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,100.0f); 
  30.         // 選擇模型觀察矩陣 
  31.         gl.glMatrixMode(GL10.GL_MODELVIEW); 
  32.         // 重置模型觀察矩陣 
  33.         gl.glLoadIdentity(); 
  34.     } 

只要加入這段代碼到OpenGLDemo class裡就可實現全屏

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);

 

設置完視圖後,即可編譯運行,可以看到一個“漂亮”的黑屏 = =!

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved