首页 理论教育 Android游戏开发,三角形绘制点线法

Android游戏开发,三角形绘制点线法

时间:2023-10-22 理论教育 版权反馈
【摘要】:在Android系统中,使用OpenGLES绘制三角形的方法有多种,其中最为常用的是点线法,在接下来的内容中将一一讲解点线法绘制三角形的知识。索引数组中第3n、3n+1和3n+2顶点定义了第n个三角形,总共绘制n/3个三角形。GL_TRIANGLE_FAN方式绘制一组相连的三角形三角形是由索引数组中的第0个顶点及其后给定的顶点所确定。执行后的效果如图5-1所示图5-1 执行效果在接下来的内容中,将通过具体的实例来讲解使用点线法绘制三角形的基本流程本实例的实现流程如下。

Android游戏开发,三角形绘制点线法

用OpenGLES实现的3D效果都是由三角形搭建的。在Android系统中,使用OpenGLES绘制三角形的方法有多种,其中最为常用的是点线法,在接下来的内容中将一一讲解点线法绘制三角形的知识。

(1)GL_POINTS方式

把每个顶点作为一个点进行处理,索引数组中的第n个顶点即定义了点n,共绘制n个点。例如,索引数组{0,1,2,3,4)。

(2)GL_INES方式

把每两个顶点作为一条独立的线段面,索引数组中的第2n和2n+l顶点,定义了第n条线段,总共绘制了n/2条线段。如果n为奇数,则忽略最后一个顶点。例如,索引数组{0,3,2,1)。

(3)GL_LINE_STRIF方式

绘制索引数组中从第0个顶点到最后一个顶点依次相连的一组线段,第n个和n+l个顶点定义了线段聆,总共绘制n-1条线段。例如,索引数组{0,3,2,1}。

(4)GL_LINE_LOOP方式

绘制索引数组中从第0个顶点到最后一个顶点依次相连的一组线段,最终最后一个顶点与第0个顶点相连。第n和行n+1个顶点定义了线段n,最后一条线段是由顶点n-1和0之间定义,总共绘制n条线段。例如,索引数组{0,3,2,1)。

(5)GL_TRIANGLES方式

把索引数组中的每3个顶点作为一个独立三角形。

索引数组中第3n、3n+1和3n+2顶点定义了第n个三角形,总共绘制n/3个三角形。例如,索引数组{0,1,2,2,1,3)。

(6)GL_TRIANGLE_STRIP方式绘制一组相连的三角形

对于索引数组中的第刀个点:若行为奇数,则第n+l、第n+2顶点定义了第疗个三角形若行为偶数,则第n、第n+1和n+2顶点定义了第n个三角形。总共绘制n-2个三角形。例如,索引数组{0,1,2,3,4)。

(7)GL_TRIANGLE_FAN方式绘制一组相连的三角形

三角形是由索引数组中的第0个顶点及其后给定的顶点所确定。顶点0、n+l和n+2定义了第n个三角形,一总共绘制n-2个三角形。例如索引数组{0,1,2,3,4)。

在接下来的内容中,将通过具体的实例来讲解使用GL_TRIANGLES方法绘制三角形的基本流程。

978-7-111-54543-9-Part02-148.jpg

本实例的实现流程如下。

1)编写布局文件main.xml,设置垂直方向布局和线型布局的ID,主要代码如下

978-7-111-54543-9-Part02-149.jpg

(2)编写文件MyActivity.java,用于重写方法onCreate(),在创建时为Activity设置布局在暂停的同时保存mSurfaceView,在恢复的同时恢复mSurfaceView。主要代码如下。

978-7-111-54543-9-Part02-150.jpg(www.xing528.com)

978-7-111-54543-9-Part02-151.jpg

(3)编写文件MySurfaceView.java,首先引入相关类及自定义视图来加载图像,然后设置角度缩放比例,并重写触控事件的回调方法来计算在屏幕上滑动多少距离来对应物体应该旋转多少度,最后定义渲染器类,实现其内部的相关方法来渲染场景。文件MySurfaceView.java的主要代码如下。

978-7-111-54543-9-Part02-152.jpg

978-7-111-54543-9-Part02-153.jpg

(4)编写文件threeCH.java,首先定义类threeCH来绘制图形,然后初始化三角形的顶点数据缓冲和颜色数据缓冲,并创建整型类型的顶点数据数组,最后定义应用程序中各个实现场景物体的绘制方法。文件threeCH.java的主要代码如下。

978-7-111-54543-9-Part02-154.jpg

978-7-111-54543-9-Part02-155.jpg

978-7-111-54543-9-Part02-156.jpg

执行后的效果如图5-1所示

978-7-111-54543-9-Part02-157.jpg

图5-1 执行效果

在接下来的内容中,将通过具体的实例来讲解使用点线法绘制三角形的基本流程

978-7-111-54543-9-Part02-158.jpg

本实例的实现流程如下。

(1)编写文件MyActivity.java,此文件的实现原理和代码与前面的实例5-1相似。

(2)编写文件MySurfaceView.java,此文件的实现原理和代码与前面的实例5-1相似。

(3)编写文件dianxianCH.java,首先定义要绘制的类dianxianCH,然后分别声明顶点缓存、颜色缓存、顶点索引缓存、顶点数、索引数和旋转角度等变量,并定义dianxianCH类的构造器来初始化相关数据,最后分别初始化三角形的各种缓冲,并定义程序中实现场景物体的各种绘制方法。文件dianxianCH.java的主要代码如下。

978-7-111-54543-9-Part02-159.jpg

978-7-111-54543-9-Part02-160.jpg

执行后的效果如图5-2所示。

978-7-111-54543-9-Part02-161.jpg

图5-2 执行效果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈