Android學習筆記:OpenGL繪圖總結

來源:互聯網
上載者:User

很久不用OpenGL ES繪圖,怕自己忘記了,於是重新複習一遍,順便原理性的東西總結如下:

1,Android 3D座標系統

  

Android的三維座標系統中:

                   座標原點位於中央,

                   X軸從左向右延伸,原點左邊的值為負數,右邊為正數;

                   Y軸從下向上延伸,原點下邊的值為負數,上邊為正數;

                   Z軸螢幕裡面向外面延伸,螢幕裡面為負數,外面為正數。

 

2,開發工具(OpenGL和OpenGL ES)介紹

   OpenGL:Open Graphics Library,開放的圖形庫介面,跨程式設計語言,跨平台的編程介面的規範。適用於圖新工作站,個人PC上。

   OpenGL ES:OpenGL for Embedded System,OpenGL的一個子集,在OpenGL的基礎上,剔除了glBegin/glEnd,四邊形,多邊形等許多非絕對必要的特性。適用於小型裝置多種嵌入式系統。

 

3,使用OpenGL ES繪製圖形原理

  

   (1),OpenGL Es的畫筆gl10在繪製圖形的時候有兩種模式:

           1,GL10.GL_TRIANGLES:  繪製三角形

           2,GL10.GL_TRIANGLE_STRIP:  用多個三角形來繪製多邊形

           也就是說,OpenGL Es只能繪製三角形組成的3D圖形。

 

   (2),繪製2D圖形時,gl10繪製圖形的方法glDrawArrays(int mode,int first,int count);

        當第一個參數為上面的第二個模式的時候,代表系統會用多個三角形來繪製多邊形,從第first個頂點開始,每三個頂點繪製一個三角形。例如我們一開始給出的點資料來源中包含點(0,1,2,3)四個點,我們的繪製方法為glDrawArrays(GL10.GL_TRIANGLE_STRIP,0,4),代表我們將繪製兩個三角形,分別由0,1,2三個頂點組成的三角形,和1,2,3三個頂點組成的三角形。所繪製的圖形如:

        所以,如果當我們給出的來源資料的位置變了,則圖形也相應的發生了變化,例如我們一開是給出的點資料來源包含點(0,1,2,3)四個點,其他的我們跟上面的一樣,只是將點的位置發生了變化,所繪製的圖形如下:

    (3),繪製3D圖形,繪製3D圖形跟繪製2D圖形的步驟基本相似,區別只是繪製3D圖形不僅需要定義各頂點位置的座標,還需要定義3D圖形的各個三角形由哪些頂點組成。

       跟2D一樣,gl繪製3D的方法:glDrawElements(int mode,int count,int type,Buffer indices)。試想想,當我們把繪製2D圖形的點不設在同一個平面上,這樣圖形不就是成了3D圖形了,3D圖形的繪製,還必須需要我們自己給出繪製面的點的組合的資料來源,也就是必須給出有幾個面,每個面是由那幾個點組成。

 

4,Android中使用OpenGL ES步驟

   (1),建立GLSurfaceView組件,使用Activity來顯示GLSurfaceView組件

   (2),為GLSurfaceView組件建立GLSurfaceView.Renderer執行個體,實現GLSurfaceView.Renderer類時需要實現該介面裡德三個方法。

           a、abstract void onDrawFrame(GL10 gl);

           b、abstract void onSurfaceChanged(GL10 gl,int width,int height);

           c、abstract void OnSurfaceCreated(GL10 gl,EGLConfig config);

   (3),調用GLSurfaceView組件的setRenderer()方法制定Renderer對象,該Renderer對象將會完成GLSurfaceView裡3D圖形的繪製。

 

 

5,三維座標系統與二維座標系統的不同

   二維座標系統上的座標值通常就直接使用系統的像素數量

   三位座標系統的座標值則取決於glFrustumf()方法的設定.

   此方法glFrustumf(float left,float right,float bottom,float top,float zNear,float zFar)

       該方法用於設定透視投影的空間大小,前兩個參數用於設定X軸上的最小座標值和最大座標值,中間兩個參數用於設定Y軸上的最小座標值和最大座標值,後面兩個參數用於設定Z軸上最小座標值和最大座標值。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.