openGL的使用步驟


使用openGL步驟:
1.創建GLSurfaceView對象
2.創建GLSurfaceView.renderer實現類.
3.設置activity的contentView,以及設置view的render對象.
4.實現render類的過程.
 a.onSurfaceCreate()方法
  1.設置清屏的顏色和啟用頂點緩沖區
  //設置清屏色
  gl.glClearColor(0, 0, 0, 1);
  //啟用頂點緩沖區.
  gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
 b.onSurfaceChanged()方法
  1.設置viewport(視口)
   gl.glViewport(0, 0, width, height);
  2.操縱投影矩陣,設置平截頭體(比例通常和視口比例相同,否則輸出畫面會走樣)
   //矩陣模式,投影矩陣,openGL基於狀態機
   gl.glMatrixMode(GL10.GL_PROJECTION);
   //加載單位矩陣
   gl.glLoadIdentity();
   //平截頭體
   gl.glFrustumf(-1f, 1f, -ratio, ratio, 3, 7);
 c.onDrawFrame()方法
  1.清除顏色緩沖區
   gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
  2.操縱模型視圖矩陣,設置眼球的參數
   gl.glMatrixMode(GL10.GL_MODELVIEW);
   gl.glLoadIdentity();//加載單位矩陣
   GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1, 0);
  3.定義圖形頂點坐標值數組
   float[] coords = {
    0f,0.5f,0f,
    -0.5f,-0.5f,0f,
    0.5f,-0.5f,0f
   };
  4.將頂點坐標轉換成緩沖區數據
   //分配字節緩存區空間,存放頂點坐標數據
   ByteBuffer ibb = ByteBuffer.allocateDirect(coords.length * 4);
   //設置的順序(本地順序)
   ibb.order(ByteOrder.nativeOrder());
   //放置頂點坐標數組
   FloatBuffer fbb = ibb.asFloatBuffer();
   fbb.put(coords);
   //定位指針的位置,從該位置開始讀取頂點數據
   ibb.position(0);
  5.設置繪圖顏色
   gl.glColor4f(1f, 0f, 0f, 1f);
  6.指定頂點緩沖區指針
   //3:3維點,使用三個坐標值表示一個點
   //type:每個點的數據類型
   //stride:0,跨度.
   //ibb:指定頂點緩沖區
   gl.glVertexPointer(3, GL10.GL_FLOAT, 0, ibb);
  7.繪圖
   //0:起始點:
   //3:繪制點的數量
   gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM