GL图像库主要用来绘制常见的2d和3d几何图形。使用GL图像库,可在屏幕中绘制2d几何图形,并且该几何图形将永远显示在屏幕当中,不会因为摄像机的移动而改变。

值得注意的是,绘制2d图像时,需要使用GL.LoadOrtho()方法来将图形映射在平面中;如果绘制的是3d图形,就无须使用此方法。

使用GL图像库时,需要将所有绘制相关的内容写在OnPostRender()方法中。有关GL图像库的脚本需要绑定在摄像机中。

GL图像库的平面坐标系:原点在左下角,x轴与y轴的最大值为1。

一、绘制线

using UnityEngine;
using System.Collections;public class DrawLine : MonoBehaviour {public Material material;void OnPostRender(){material.SetPass(0);//设置该材质通道,0为默认值GL.LoadOrtho();//设置绘制2d图像GL.Begin(GL.LINES);//绘制类型为线段Draw(0, 0, 200, 100);Draw(0, 50, 200, 150);Draw(0, 100, 200, 200);GL.End();}//将屏幕中某个点的像素坐标进行转换void Draw(float x1,float y1,float x2,float y2){GL.Vertex(new Vector3(x1 / Screen.width, y1 / Screen.height, 0));GL.Vertex(new Vector3(x2 / Screen.width, y2 / Screen.height, 0));}
}

二、绘制曲线

using UnityEngine;
using System.Collections.Generic;/// <summary>
/// 记录鼠标坐标,再两两连线
/// </summary>
public class DrawCurve : MonoBehaviour {public Material material;private List<Vector3> lineInfo = new List<Vector3>();void Update () {lineInfo.Add(Input.mousePosition);}void OnPostRender(){material.SetPass(0);//设置该材质通道,0为默认值GL.LoadOrtho();//设置绘制2d图像GL.Begin(GL.LINES);//绘制类型为线段for (int i = 0; i < lineInfo.Count - 1; i++){Vector3 start = lineInfo[i];Vector3 end = lineInfo[i + 1];Draw(start.x,start.y,end.x,end.y);}GL.End();}//将屏幕中某个点的像素坐标进行转换void Draw(float x1, float y1, float x2, float y2){GL.Vertex(new Vector3(x1 / Screen.width, y1 / Screen.height, 0));GL.Vertex(new Vector3(x2 / Screen.width, y2 / Screen.height, 0));}
}

三、绘制四边形

using UnityEngine;
using System.Collections;public class DrawQuad : MonoBehaviour {public Material material;void OnPostRender(){//绘制正四边形,提供的坐标必须是顺时针或者逆时针Draw(100, 100, 100, 200, 200, 200, 200, 100);//绘制无规则四边形Draw(15, 5, 10, 115, 95, 110, 90, 10);}//绘制四边形,四个点坐标void Draw(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4){GL.PushMatrix();material.SetPass(0);//设置该材质通道,0为默认值GL.LoadOrtho();//设置绘制2d图像GL.Begin(GL.QUADS);//绘制类型为四边形GL.Vertex3(x1 / Screen.width, y1 / Screen.height, 0);GL.Vertex3(x2 / Screen.width, y2 / Screen.height, 0);GL.Vertex3(x3 / Screen.width, y3 / Screen.height, 0);GL.Vertex3(x4 / Screen.width, y4 / Screen.height, 0);GL.End();GL.PopMatrix();}
}

四、绘制三角形

using UnityEngine;
using System.Collections;public class DrawTriangle : MonoBehaviour {public Material material;void OnPostRender(){Draw(100,0,100,200,200,100);}void Draw(float x1, float y1, float x2, float y2, float x3, float y3){material.SetPass(0);//设置该材质通道,0为默认值GL.LoadOrtho();//设置绘制2d图像GL.Begin(GL.TRIANGLES);//绘制类型为三角形GL.Vertex3(x1 / Screen.width, y1 / Screen.height, 0);GL.Vertex3(x2 / Screen.width, y2 / Screen.height, 0);GL.Vertex3(x3 / Screen.width, y3 / Screen.height, 0);GL.End();}
}

五、绘制3d几何图形

操作十分简单,就是将GL.LoadOrtho();注释掉即可

原来图形不会随摄像机的移动、旋转而变化,现在则会。

[Unity基础]GL图像库相关推荐

  1. Unity基础开发之事件函数的执行顺序

    Unity基础开发之事件函数的执行顺序 文章目录 前言 一.Initializtion阶段 Awake() OnEnable() 二.Editor阶段 Reset() OnValidate() 三.第 ...

  2. Unity开发(一).Unity基础以及开发环境搭建

    1. Unity基础知识概括 1)初识 Unity 由 Unity Technologies开发,创建三维视频游戏,建筑可视化及实时三维动画等互动内容的多平台的综合性开发工具. 编辑器运行平台:Win ...

  3. 第一阶段unity基础

    第一阶段unity基础 引言 注意: 1.重点:1.适用性(什么时候用,怎么用)<记脑子里>  2.作用(能够解决什么问题) 3.定义  4.操作/语法 2.每天练习必须会独立完成 3.形 ...

  4. Unity用GL接口实现画格子

    玩过COC的知道,地表上有格子显示.以下是用GL的画线接口实现. 效果如下 shder代码参考我另篇文章 Unity用GL接口实现画圆 以下c#代码.提醒下,调用脚本依然是挂在相机上. using S ...

  5. Unity基础学习路线

        Unity基础 C#程序设计 第001课初识unity 第002课初始unity场景树_渲染体系_物理体系 第003课初识Unity C#的基本结构_类_成员_类的函数 第004课Unity ...

  6. Unity 基础 之 xml 使用 Office Excel 轻松编辑保存 xml 数据,并解析读取数据

    Unity 基础 之 xml  使用 Office Excel 轻松编辑保存 xml 数据 目录 Unity 基础 之 xml  使用 Office Excel 轻松编辑保存 xml 数据 一.简单介 ...

  7. Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等

    Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等 目录 Unity 基础 之 在 UGUI 上简单实现VideoPl ...

  8. Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装

    Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 目录 Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 一.简单介绍 二.实现原理 三.注意事项 四.效果预览 ...

  9. Unity3D笔记十八 GL图像库

    作者:PEPE  出处:http://pepe.cnblogs.com/ 1.绘制2D图像的时需要使用GL.LoadOrtho()方法来将图形映射到平面中. 2.所有绘制相关的内容都要写在OnPost ...

最新文章

  1. XDC约束技巧之时钟篇
  2. 心得体悟帖---18、时间
  3. go 从入门到精通(二)基本数据类型和操作符
  4. AIX学习之NMON工具详解
  5. 具体数学第二版第二章习题(2)
  6. 十大常用算法之马踏棋盘算法
  7. 8位数控分频器的设计_数控分频器的VHDL设计
  8. 玩转SpringCloud(F版本) 四.路由网关(zuul)
  9. B - Silly Mistake set +思维
  10. html i标签是什么意思,html中为什么用i标签i/i作小图标
  11. Chrome 浏览器翻译停服!改Hosts也失效!还有这些解决方案
  12. 手机端上传图片出现“没有应用可执行操作”
  13. Outlook登录163邮箱,qq邮箱以及企业邮箱等邮箱
  14. 微信小程序iconfont不显示解决
  15. 其实,搭建一个有品质的棋牌游戏平台没那么复杂
  16. 并行并发CMS垃圾回收器:-XX:+UseConcMarkSweepGC
  17. 机器学习词汇翻译解释(2)
  18. (信贷风控七)申请评分卡模型Python实现(图文+代码实现)
  19. 手把手教你画AndroidK线分时图及指标
  20. “上云 用数 赋智”,这说的不是数字中台吗?

热门文章

  1. mall-swarm微服务商城系统
  2. P1162 填图颜色 洛谷(BFS的简单应用)
  3. Android优雅的ui倒计时,Hurry - 一款颜值超高的日历+倒计时 APP - Android 应用 - 生活 - 【最美应用】...
  4. Redis 6 学习记录
  5. 【AxureRP9】V1.0网易课堂课程
  6. 未来影像!华为P30国行版售价曝光:徕卡四摄+超级变焦,3988元起
  7. ArGIS计算多个栅格均值、最大值等
  8. python新年贺卡_写个新年贺卡生成器,各位小伙伴们新年快乐呀~
  9. 常见的异常类有哪些?
  10. 名帖116 文徵明 小楷《离骚经》