Android OpenGL ES 开发教程(11):绘制三角形Triangle
来源:互联网 发布:linux history 日期 编辑:程序博客网 时间:2024/06/10 09:05
三角形为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。
- Android OpenGL ES 开发教程(11):绘制三角形Triangle
- Android OpenGL ES 开发教程(11):绘制三角形Triangle
- Android OpenGL ES 开发教程(11):绘制三角形Triangle
- Android OpenGL ES 开发教程(11):绘制三角形Triangle
- Android OpenGL ES(十):绘制三角形Triangle
- openGL ES Android 三角形绘制
- android opengl es绘制三角形+纹理
- Android OpenGL ES 基础:绘制三角形
- Android OpenGL ES 2.0绘制简单三角形
- Android OpenGL ES 开发教程(9):绘制点Point
- Android OpenGL ES 开发教程(10):绘制线段Line Segment
- Android OpenGL ES 开发教程(19):绘制迷你太阳系
- Android OpenGL ES 开发教程(22):绘制一个球体
- Android OpenGL ES 开发教程(9):绘制点Point
- Android OpenGL ES 开发教程(10):绘制线段Line Segment
- Android OpenGL ES 开发教程(19):绘制迷你太阳系
- Android OpenGL ES 开发教程(22):绘制一个球体
- Android OpenGL ES 开发教程(9):绘制点Point
- QCC,让在学校的我们感受公司的温暖
- C语言 压栈的最简单实现
- 学溜冰——畅谈面对新事物看法
- HttpServletRequest基本概念总结
- 2012.7.14总结
- Android OpenGL ES 开发教程(11):绘制三角形Triangle
- 用NSThread创建子线程
- 入网与入库的学习
- thinkphp 验证码 (2)
- 浮躁也许是我们太过年轻?
- 卓有成效是可以学会的
- 珍珠港的教训?
- 要成功,先发“疯”,头脑简单往前冲 ————记游泳心得
- 生活多一点