unity制作线三角以及四边形.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unity制作线三角以及四边形

7.5 GL图象库 GL图象库是底层的图象库,主要功能是使用程序来绘制常见的2D与3D几何图形。这些图形具有一定的特殊性,他们不属于3D网格图形,只会以面的形式渲染。 使用GL图象库,可在屏幕中绘制2D几何图形,并且该几何图形将永远显示在屏幕当中,不会因为摄象机的移动而改变。2D图形的呈现方式和前面章节介绍的GUI有点类似,值得注意的是,绘制2D图像时,需要使用GL.LoadOrtho()方法将图形映射在平面中;如果绘制的是3D图形,就无须使用此方法。 使用GL图象库时,需要将所有绘制相关的内容写在OnPostRender()方法中。此方法由系统自身调用,无法手动调用。此外,有关GL图象库的脚本需要绑定在Hierarchy视图中的摄象机对象当中,否则将无法显示绘制的图形 绘制线 在了解如何绘制线之前,先熟悉Unity中GL图象库的平面坐标系。按照箭头所指的方向,平面坐标系的原点(0,0)位于左下脚。 值得注意的是,GL图象库的平面坐标和普通坐标是有区别的,GL图象库的x轴的最大值是1,y轴的最大值也为1,而不是按照像素来计算的,因此,在GL图象库的平面坐标系中,每个点的横坐标和纵坐标都应当是0与1之间的浮点数,而真实的像素坐标需要根据这个浮点数来计算。 比如当前游戏屏幕的像素宽高是500*500,在GL图象库平面上选择一个点(0.5f,0.5f),那么这个点的真实像素的横坐标和纵坐标应当是: 500(屏幕宽)*0.5(x坐标) = 250 500(屏幕高)*0.5(x坐标) = 250 public class Script:MonoBehaviour { //绘制线段材质 public Material material; //此绘制方法由系统调用 void OnPostRender() { if(!material) { Debug.LogError(“请给材质资源赋值”); Return; } //设置该材质通道,0为默认值 Material.SetPass(0); GL.LoadOrtho(); //表示开始绘制,绘制类型为线段 GL.Begin(GL.LINES); //绘制线段 DrawLine(0,0,200,100); DrawLine(0,50,200,100); DrawLine(0,100,200,200); GL.End(); } void DrawLine(float x1,float y1;float x2,float y2) { //绘制线段,需要将屏幕中某个点的像素坐标点除以屏幕完成宽或高 GL.Vetex(new Vector3(x1/Screen.width,y1/Screen.height,0)); GL.Vetex(new Vector3(x2/Screen.width,y2/Screen.height,0)); } 7.5.2实例----绘制曲线(228) 本例通过GL图象库记录鼠标移动的轨迹并且将其以曲线的形式显示在屏幕当中,如图所示,具体实现原理是:记录鼠标在Game视图中移动时每一点的坐标,然后将鼠标移动的坐标存储在链表中,使用绘制方法OnPostRender()遍历链表中记录的鼠标坐标点,最后通过GL图象库绘制线段的方法将这些点两两连成一条线段 当前鼠标x轴位置:835 当前鼠标y轴位置:894 public class Script:MonoBehaviour { //绘制线段材质 public Material material; Private ListVector lineInfo; void Start() { //初始化鼠标线段链表 lineInfo = new ListVector3(); } void Update() { //将每次鼠标改变的位置存储进链表 lineInfo.Add(Input.mousePosition); } void OnGUI() { GUILayout.Label(“当前鼠标x轴位置:” +Input.mousePosition.x) GUILayout.Label(“当前鼠标y轴位置:”+Input.mousePosition.y) } //此绘制方法又系统调用 void OnPostRender(){ if(!material) { Debug.LogError(“请给材质资源赋值”); Return; } //设置该材质通道,0为默认值 material.SetPass(0); //设置绘制2D图象 GL.LoadOrtho(); //表示开始绘制,绘制类型为线段 GL.Begin(GL.LINES); //得到鼠标信息的总数量 int si

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档