posts - 189,comments - 115,trackbacks - 0

          OpenGL ES學習階段性總結

          http://seya.javaeye.com/blog/528560
          這幾天看了OpenGL ES的相關資料和代碼,總結了一些經驗。 
          1. 要畫圖,得設定畫的是什么圖形,是點,直線還是三角形,通過gl.glDrawArrays( p1, 0, p2);中的p1來設定。可用的參數有GL10.GL_POINTS, GL10.GL_LINES, GL10.GL_TRIANGLES, GL10.GL_TRANGLES_FAN, GL10.GL_TRIANGLE_STRIP... 

          2. 知道了形狀,要設定數據源,也就是要畫的點有哪些。通過gl.glVertexPointer(3, GL10.GL_FIXED, 0, vertexBuff );來設定。vertexBuff就是你想要畫的哪些點。它表示為一個一維矩陣,但實際上根據你要畫的形狀來分成多個部分的。比如你想一個三角形。那么這個矩陣就可以表示為{-1,0,1,0,0,2},{-1,0}表示第一個點,{1,0}表示第二個點,{0,2}表示第三個點。如果之后還有的話,也應該是6*N個數字,以確定更多的三角形坐標。 

          3. 要是gl.glDrawArrays()方法起作用,之前得調用gl.glEnableClientState(int p1); p1表示要激活的數組的種類,比如要gl.glVertexPointer()設置vertex,那么必須先調用gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);要用數組設置顏色,先調用gl.glEnableClientState( GL10.GL_COLOR_ARRAY ); 

          4. 畫三維圖像時,要激活深度測試。gl.glEnable( GL10.GL_DEPTH_TEST ); 

          5. 使用texture之前必須先調用gl.glEnable( GL10.GL_TEXTURE_2D );同時調用gl.glEnableClientState( GL10.GL_TEXTURE_COORD_ARRAY );來激活texture數組畫圖。 
          6. glLoadIdentity():另當前繪圖坐標系從新回到世界坐標系的位置,另他們重合。 
          glTranslatef(x,y,z):使繪圖坐標系相對世界坐標系沿x,y,z軸移動x,y,z個單位。 
          glVertex3f(x,y,z):在當前繪圖坐標系繪制一個點 
          glColor3f(r,g,b):設置以后繪圖函數的繪圖顏色,如果沒有再次碰到glColor3f(),以后任何繪圖函數繪制出的圖形顏色都是這個顏色。r,g,b的范圍從0.0-1.0。r-藍色,g-綠色,b-藍色,色彩是這三種顏色分量的混合,比如glColor3f(1.0,1.0,0.0)是黃色,glColor3f(1.0,0.0,0.0)是紅色。 
          glRotatef(angle,x,y,z):和glTranslatef()屬于一類函數,glTranslatef()是平移,glRotatef是旋轉,就是使當前繪圖坐標系繞世界坐標系的x,y,z旋轉angle個角度,x,y,z的值非0既1,比如glRotatef(30,1.0f,0.0f,0.0f)就是繞x軸旋轉30度,glRotatef(30,1.0f,1.0f,0.0f)就是繞x,y的夾角線旋轉30度。 

          7. 用glRotatef能是對象本身圍繞一個向量旋轉,我們也可以改變觀測鏡頭本身,參考點和向上向量來改變所看到的對象,能產生glRotatef同樣的旋轉效果。 
          GLU.gluLookAt(gl, 
          0.0f, 0.0f, 3.0f,//觀測點在屏幕正中向外3.0f單位距離的地方
          viewX, 0.0f, 0.0f, //參考點在屏幕中間水平位置viewX 
          0.0f, 1.0f, 0.0f );//表示Y軸向上 
          綜合這三個點,表示你這個人的眼睛從屏幕正中向外的3.0單位距離的地方,拿著攝像機瞄準viewX的地方再看,看的時候你的頭是向上的(如果設置成1.0f, 0.0f, 0.0f,那么表示你的頭得向右歪過來,成水平來看)。 

          posted on 2010-08-31 21:30 MEYE 閱讀(554) 評論(0)  編輯  收藏 所屬分類: Android3D
          主站蜘蛛池模板: 连江县| 于都县| 宁德市| 新田县| 金堂县| 遂昌县| 启东市| 仁寿县| 长丰县| 株洲县| 临泽县| 德令哈市| 灵石县| 治县。| 资源县| 老河口市| 越西县| 宣恩县| 射洪县| 嵩明县| 恩施市| 武夷山市| 南开区| 日喀则市| 巴东县| 五台县| 安宁市| 图们市| 肇东市| 青海省| 英超| 宜阳县| 玛沁县| 吴江市| 新津县| 临沧市| 灯塔市| 钟祥市| 广宁县| 云阳县| 玛纳斯县|