Unity GL画折线
新建一个脚本,这个物体得挂在有摄像机组件的物体上才能生效
OnPostRender() 这个函数才会被自动调用(类似生命周期自动调用)
然后就可以代码画线了,原理是openGL的画线
using UnityEngine;
using System.Collections;
using System.Collections.Generic; /// <summary>
/// GL画图
/// </summary>
public class GLDraw : UnityNormalSingleton<GLDraw> { public Transform p1;
public Transform p2;
private List<Vector2> pointList;
private bool isOpen; private Material mat;
private Shader shader; private void Start()
{
pointList = new List<Vector2>();
shader = Shader.Find("Unlit/Color");
mat = new Material(shader);
mat.SetColor("Main Color", Color.black);
} public void DrawLine(List<object> list)
{
pointList.Clear();
for (int i = ; i < list.Count; i++)
{
Vector2 screenPos = (Vector2)list[i];
pointList.Add(new Vector2(screenPos.x, Screen.height - screenPos.y));
}
} public void ShowLine(bool b)
{
isOpen = b;
} void OnPostRender()
{
if (!isOpen)
{
return;
} //mat = new Material(Shader.Find("Unlit/Color"));
//Debug.Log("调用");
//if (!mat)
//{
// Debug.LogError("Please Assign a material on the inspector");
// return;
//}
GL.PushMatrix(); //保存当前Matirx
mat.SetPass(); //刷新当前材质
GL.LoadPixelMatrix();//设置pixelMatrix
GL.Color(Color.yellow);
GL.Begin(GL.LINES); //画2次,奇偶数画连续折线法
for (int i = ; i < pointList.Count; i++)
{
GL.Vertex3(pointList[i].x, pointList[i].y, );
}
for (int i = ; i < pointList.Count; i++)
{
GL.Vertex3(pointList[i].x, pointList[i].y, );
}
//单次画线发
//GL.Vertex3(0, 0, 0);//GL.Vertex3(Screen.width, Screen.height, 0);
//固定2点画
//GL.Vertex3(p1.position.x, p1.position.y, 0);
//GL.Vertex3(p2.position.x, p2.position.y, 0);
GL.End();
GL.PopMatrix();//读取之前的Matrix
}
}
Unity GL画折线的更多相关文章
- Unity GL 画圆
Unity下GL没有画圆的函数,只能自己来了. 如果能帮到大家,我也很高兴. 虽然没有画圆的函数,但是能画直线,利用这一点,配合微积分什么的,就可以画出来了.反正就是花很多连在一起的直线,每条直线足够 ...
- unity gl 画线
using UnityEngine; using System.Collections; public class TGLLine : MonoBehaviour { private static M ...
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- SAS 画折线图PROC GPLOT
虽然最后做成PPT里的图表会被要求用EXCEL画,但当我们只是在分析的过程中,想看看数据的走势,直接在SAS里画会比EXCEL画便捷的多. 修改起来也会更加的简单,,不用不断的修改程序然后刷新EXCE ...
- echarts入门基础,画折线图
注意:一定要自己引入echarts库 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Matplotlib学习---用matplotlib画折线图(line chart)
这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevd ...
- echars画折线图的一种数据处理方式
echars画折线图的一种数据处理方式 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- python的turtle模块画折线图
代码如下: import turtle yValues = [10.0,7.4,6.4,5.3,4.4,3.7,2.6] def main(): t = turtle.Turtle() t.hidet ...
- 使用OpenCV画折线图
使用OpenCV画直方图是一件轻松的事情,画折线图就没有那么Easy了,还是使用一个库吧: GraphUtils 源代码添加入工程 原文链接:http://www.360doc.com/content ...
随机推荐
- Java设置jre通过java new Date()得到的时间的时区
1.前提 由于公司有印尼的项目,该项目仅对印尼当地开放使用(公司在国内,用的是阿里云的ECS,但是阿里云在印尼没有服务器,所以就买了新加坡的服务器),印尼当地人用的是东七区的时间,所以比国内东八区的时 ...
- VC中CDC与HDC的区别以及二者之间的转换
CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的 ...
- C++ springf()的用法(转)
转:http://blog.csdn.net/masikkk/article/details/5634886 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprin ...
- DATEADD和DATEDIFF
DateAdd函数 返回 返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔. 语法 DateAdd(interval, number, date) DateAdd 函数语 ...
- 串口实现FIFO接受数据(V2)
在上一次的基础上添加了不同需求缓冲区大小可变的更改. /* * 串口的FIFO简单读取实现 * 功能,实现串口的FIFO实现 * 使用方法: * 更新时间:2017.9.26 * 版本:v2.0.0 ...
- sh脚本
通过. xxx.sh执行 经常在第一行加上#!/bin/bash,表示需要使用的bash shell环境 关于#!/bin/bash和#!/bin/sh 可以直接放linux命令 使用for循环 使用 ...
- Python【变量】
本文介绍 1.Python运算符 运算符分类 运算符分为:算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算 一.算数运算:返回数字 假设变量a=10,b=20 运算符: + 相加a+ ...
- 【Selenium专题】FAQ_浏览器_ChromeDriver版本导致报错
报错信息 Started ChromeDriver port=31984 version=23.0.1240.0 log=C:\workspace\test\chromedriver.log [063 ...
- C# Winform下一个热插拔的MIS/MRP/ERP框架13(窗体基类)
作为一个ERP数据处理框架,大部分的开发场景都差不多. 理想中,对于通用数据处理,我的步骤如下: 1.为窗体指定数据来源(数据表/查询等): 2.拖入编辑控件,指定绑定字段: 3.结束. 为此,我设计 ...
- BZOJ4032: [HEOI2015]最短不公共子串(后缀自动机+序列自动机)
题目描述 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是. 一个串的“子序列”指的是它的可以 ...