三角形为OpenGL ES支持的面,同样创建一个DrawTriangle Activity,定义6个顶点使用三种不同模式来绘制三角形:
float vertexArray[] = { -0.8f, -0.4f * 1.732f, 0.0f, 0.0f, -0.4f * 1.732f, 0.0f, -0.4f, 0.4f * 1.732f, 0.0f,  0.0f, -0.0f * 1.732f, 0.0f, 0.8f, -0.0f * 1.732f, 0.0f, 0.4f, 0.4f * 1.732f, 0.0f,};

本例绘制

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_TRIANGLES, 0, 6); break; case 3: case 4: case 5: gl.glColor4f(0.0f, 1.0f, 0.0f, 1.0f); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 6); break; case 6: case 7: case 8: case 9: gl.glColor4f(0.0f, 0.0f, 1.0f, 1.0f); gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 6); break; }  gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); }

这里index 的目的是为了延迟一下显示(更好的做法是使用固定时间间隔)。前面说过GLSurfaceView 的渲染模式有两种,一种是连续不断的更新屏幕,另一种为on-demand ,只有在调用requestRender() 在更新屏幕。 缺省为RENDERMODE_CONTINUOUSLY 持续刷新屏幕。

OpenGLDemos 使用的是缺省的RENDERMODE_CONTINUOUSLY持续刷新屏幕 ,因此Activity的drawScene 会不断的执行。本例中屏幕上顺序以红,绿,蓝色显示TRIANGLES, TRIANGLE_STRIP,TRIANGLE_FAN。


更多相关文章

  1. [置顶] 我的Android进阶之旅------>Android常用计量单位(Dimensio
  2. android 平滑切换屏幕的几种方法总结
  3. Android(安卓)动态控制控件的位置
  4. android中viewPager实现的屏幕左右切换(入门篇)
  5. Android无视屏幕解锁保护界面
  6. android游戏引擎andengine学习系列二:简单的例子
  7. 一起学android opengl之光照
  8. Android从网络中获得一张图片并显示在屏幕上的实例详解
  9. API Demos 2.2 研读笔记(10)——Redirection, Reorder Activity an

随机推荐

  1. 【Android(安卓)Developers Training】 4
  2. Android:使用Socket网络通信时异常:java.ne
  3. 文章【Android(安卓)的视频编码 H263 MP4
  4. Android(安卓)程式开发:(廿一)消息传递 ——
  5. android讲义2之简单图片浏览器且有截图效
  6. Android(安卓)UI Surface 界面绘制原理
  7. Android下用gdb远程调试
  8. 二、获取wifi列表并连接wifi
  9. Android(安卓)SDK下载速度慢无法更新?使用
  10. android音乐播放器开发 SweetMusicPlayer