实验指导(六)
——图形绘制与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);
顺序不能写反,否则会出问题,至于什么问题,自己动手试下就知道了,
publicclass GLReader2 implements Renderer {
privateintone = 0x10000;
//金字塔的4个三角形,每个三角形上的三个点
private IntBuffer triggerBuffer=IntBuffer.wrap(newint[]{ 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 });
//定义三角形和四边形的旋转变量
privatefloatrotateTri,rotateQuad; /**
* 金字塔的三个三角形,每个三角形三个点的颜色 */
private IntBuffer colorBuffer=IntBuffer.wrap(newint[]{ 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(newint[]{ one,one,-one,
-one,one,-one, one,one,one,
-one,one,one,
one,-one,one,
-one,-one,one, one,-one,-one,
-one,-one,-one,
相关推荐: