編輯:關於Android編程
本文實例講述了Android編程之OpenGL繪圖技巧。分享給大家供大家參考,具體如下:
很久不用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在繪制圖形的時候有兩種模式:
① GL10.GL_TRIANGLES: 繪制三角形
② 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軸上最小坐標值和最大坐標值。
希望本文所述對大家Android程序設計有所幫助。
android手機內存本來就不大,要是老把數據放在手機裡,很明顯會讓手機的使用者體驗到什麼是“卡”,所以,我們把數據要放到SD卡中,以減少手機內存的使用,本文僅寫入文件
一、---框架---首先還是來把總體的編碼流程來樹梳理一下,按照這個順序來編碼可以使思路更加清晰。(1)創建兩個View,一個listview一個item_view(2)
我們要實現的目標是:做一個短信發送器 界面: 因為要涉及到短信發送這種屬於隱私的問題,所以我們要在AndroidManifest.xml中添加一行代碼,來獲得權限: 然
點九圖片的拉伸區域不難理解,顯示內容區域是怎樣的?.9 ,是andriod平台的應用軟件開發裡的一種特殊的圖片形式,文件擴展名為:.9.png智能手機中有自動橫屏的功能,