Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 繪制線段Line Segment

Android 繪制線段Line Segment

編輯:Android開發實例


        創建一個DrawLine Activity,定義四個頂點:

java代碼:
float vertexArray[] = {
-0.8f, -0.4f * 1.732f, 0.0f,
-0.4f, 0.4f * 1.732f, 0.0f,
0.0f, -0.4f * 1.732f, 0.0f,
0.4f, 0.4f * 1.732f, 0.0f,
};


        分別以三種模式GL_LINES,GL_LINE_STRIP,GL_LINE_LOOP 來繪制直線:

java代碼:
public void DrawScene(GL10 gl) {
super.DrawScene(gl);

ByteBuffer vbb= ByteBuffer.allocateDirect(vertexArray.length*4);
vbb.order(ByteOrder.nativeOrder());
FloatBuffer vertex = vbb.asFloatBuffer();
vertex.put(vertexArray);
vertex.position(0);

gl.glLoadIdentity();
gl.glTranslatef(0, 0, -4);

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertex);
index++;
index%=10;
switch(index){
case 0:
case 1:
case 2:
gl.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
gl.glDrawArrays(GL10.GL_LINES, 0, 4);
break;
case 3:
case 4:
case 5:
gl.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
gl.glDrawArrays(GL10.GL_LINE_STRIP, 0, 4);
break;
case 6:
case 7:
case 8:
case 9:
gl.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
gl.glDrawArrays(GL10.GL_LINE_LOOP, 0, 4);
break;
}

gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);

}


        這裡index 的目的是為了延遲一下顯示(更好的做法是使用固定時間間隔)。前面說過GLSurfaceView 的渲染模式有兩種,一種是連續不斷的更新屏幕,另一種為on-demand ,只有在調用requestRender() 在更新屏幕。 缺省為RENDERMODE_CONTINUOUSLY 持續刷新屏幕。

        OpenGLDemos 使用的是缺省的RENDERMODE_CONTINUOUSLY持續刷新屏幕 ,因此Activity的drawScene 會不斷的執行。本例中屏幕上順序以紅,綠,藍色顯示LINES, LINE_STRIP,LINE_LOOP。

效果圖:


 

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