首页 实验6——图形绘制与OpenGLES

实验6——图形绘制与OpenGLES

举报
开通vip

实验6——图形绘制与OpenGLES实验6——图形绘制与OpenGLES 实实指实;六,——实形实制与OpenGL ES一、实实目的 在幕实制各实实形~了解屏Android中OpenGL的使用。二、实实要求 1、了解在幕实实的方法屏 2、了解Android上OpenGL的使用。 3、完成三角形和四实形的实制。 三、实实步实 实目界面, 1、实建实目 新建一个Android工程~目实实如下实构: 2、布局文件 修改main .Xml文件 3、实建Activity 修改GLReader.java文件~新建GLReader2.java文件~代实如...

实验6——图形绘制与OpenGLES
实验6——图形绘制与OpenGLES 实实指实;六,——实形实制与OpenGL ES一、实实目的 在幕实制各实实形~了解屏Android中OpenGL的使用。二、实实要求 1、了解在幕实实的方法屏 2、了解Android上OpenGL的使用。 3、完成三角形和四实形的实制。 三、实实步实 实目界面, 1、实建实目 新建一个Android工程~目实实如下实构: 2、布局文件 修改main .Xml文件 3、实建Activity 修改GLReader.java文件~新建GLReader2.java文件~代实如下实,GLReader.java文件: 实里的View是用的GLSurfaceView,但是要它setRenderer()一下~就像我实Activity 里面的setContentView()方法一实! GLReader2.java: 实里的OpenGLRender是重新的实~实承于写它GLSurfaceView.Renderer,我实要实实其实的三方法个:onSurfaceCreated(),onSurfaceChanged(),onDrawFrame()。注意,在onSurfaceChanged()里 // 实置实口的大小 gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10); // 实实模型实察矩实 gl.glMatrixMode(GL10.GL_MODELVIEW); 实序不能反~否实出实实~至于什实实实~自己实手实下就知道了~写会 public class GLReader2 implements Renderer { private int one = 0x10000; //金字塔的4个个个三角形~每三角形上的三点 private IntBuffer triggerBuffer=IntBuffer.wrap(new int[]{ 0,one,0, -one,-one,one, one,-one,one, 0,one,0, one,-one,one, one,-one,-one, 0,one,0, one,-one,-one, -one,-one,-one, 0,one,0, -one,-one,-one, -one,-one,one }); //定实三角形和四实形的旋实实量 private float rotateTri,rotateQuad; /** * 金字塔的三三角形~每三角形三点的实色 个个个 */ private IntBuffer colorBuffer=IntBuffer.wrap(new int[]{ one,0,0,one, 0,one,0,one, 0,0,one,one, one,0,0,one, 0,one,0,one, 0,0,one,one, one,0,0,one, 0,one,0,one, 0,0,one,one, one,0,0,one, 0,one,0,one, 0,0,one,one, }); //四方的体6个个四实形~每四实形的4个点 private IntBuffer quaterBuffer = IntBuffer.wrap(new int[]{ one,one,-one, -one,one,-one, one,one,one, -one,one,one, one,-one,one, -one,-one,one, one,-one,-one, -one,-one,-one, one,one,one, -one,one,one, one,-one,one, -one,-one,one, one,-one,-one, -one,-one,-one, one,one,-one, -one,one,-one, -one,one,one, -one,one,-one, -one,-one,one, -one,-one,-one, one, one, -one, one, one, one, one, -one, -one, one, -one, one }); //定实四方实色 体 private IntBuffer colorBufferForQuad = IntBuffer.wrap(new int[]{ 0,one,0,one, 0,one,0,one, 0,one,0,one, 0,one,0,one, one, one/2, 0, one, one, one/2, 0, one, one, one/2, 0, one, one, one/2, 0, one, one,0,0,one, one,0,0,one, one,0,0,one, one,0,0,one, one,one,0,one, one,one,0,one, one,one,0,one, one,one,0,one, 0,0,one,one, 0,0,one,one, 0,0,one,one, 0,0,one,one, one,0,one,one, one,0,one,one, one,0,one,one, one,0,one,one }); /** * 所有实实的工作放到此方法里 */ @Override public void onDrawFrame(GL10 gl) { //清屏除幕和深度实存 gl.glClear(GL10.GL_COLOR_BUFFER_BIT| GL10.GL_DEPTH_BUFFER_BIT ); //重置前的模型实察矩实 当 gl.glLoadIdentity(); // 左移 1.5 实位~移入幕 并屏6.0 gl.glTranslatef(-1.5f, 0.0f, -6.0f); //实实点实置功能 启 gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); /** * 旋实三角形 * 参数, * 1、旋实角度 * 234是x、y、z共同定旋实实方向的 决参数 * 例如:1,0,0 表示实实x坐实的一实位向右旋实 个 * -1,0,0 表示.................向左旋实 */ gl.glRotatef(rotateTri, 0.0f, 1.0f, 0.0f); /** * 实置实点据 数 * 参数, * 1、实点尺寸----实里使用的是xyz 坐实系~所以是3 * 2、实点实型----实里是固定的~所以用GL_FIXED * 3、步实 * 4、实点实存----即数实点实 */ gl.glVertexPointer(3,GL10.GL_FIXED, 0, triggerBuffer); //实色彩渲染功能 启 gl.glEnableClientState(GL10.GL_COLOR_ARRAY); //实置三角形实色 gl.glColorPointer(4, GL10.GL_FIXED, 0, colorBuffer); /** * 实制实点 * 通实循实实制四三角形~实成金字塔 个 */ for (int i = 0; i <4; i++) { gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i*3, 3); } //实实色彩渲染功能 gl.glDisableClientState(GL10.GL_COLOR_ARRAY); // gl.glFinish(); /*****************金字塔实制完成**********************/ //重置前的模型实察矩实 当 gl.glLoadIdentity(); //右移1.5~实入6.0 gl.glTranslatef(1.5f, 0.0f, -6.0f); //实置四实形实点据 数 gl.glVertexPointer(3, GL10.GL_FIXED, 0, quaterBuffer); //实色彩渲染功能 启 gl.glEnableClientState(GL10.GL_COLOR_ARRAY); //实置四方体6个个四实形各实点的实色 gl.glColorPointer(4, GL10.GL_FIXED, 0, colorBufferForQuad); //旋实 gl.glRotatef(rotateQuad, 1.0f, 0.0f, 0.0f); //实制实点 for (int i = 0; i < 6; i++) { gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i*4, 4); } //实实色彩渲染功能 gl.glDisableClientState(GL10.GL_COLOR_ARRAY); //取消实点实置 gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); //改实旋实角度 rotateTri+=0.5; rotateQuad-=0.5; } /** * 当窗口大小实生改实是实用此方法 * 不管口大小是否已实改实~此方法至少实行一次 窗 * 所以在此方法中实置OpenGL实景的大小 */ @Override public void onSurfaceChanged(GL10 gl, int width, int height) { float ratio = (float) width / height; //实置OpenGL实景大小实幕大小 屏 gl.glViewport(0, 0, width, height); /*实幕实置透实实屏*/ //实置投影矩实 gl.glMatrixMode(GL10.GL_PROJECTION); //重置投影矩实 gl.glLoadIdentity(); //实置实口大小 gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10); // 实实模型实察矩实 gl.glMatrixMode(GL10.GL_MODELVIEW); // 重置模型实察矩实 gl.glLoadIdentity(); } /** * 窗口实建实实用此方法 * 此方法做初始化的操作 内 */ @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { //实透实实行修正 gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); //背景,黑色 gl.glClearColor(0, 0, 0, 0); //启实实影平滑 gl.glShadeModel(GL10.GL_SMOOTH); //实置深度实存 gl.glClearDepthf(1.0f); //启用深度实实 gl.glEnable(GL10.GL_DEPTH_TEST); //所做深度实实的实型 gl.glDepthFunc(GL10.GL_LEQUAL); } }
本文档为【实验6——图形绘制与OpenGLES】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_554469
暂无简介~
格式:doc
大小:75KB
软件:Word
页数:12
分类:互联网
上传时间:2017-09-27
浏览量:15