Unity 用GL画曲线


要记得加下面2个头文件,才能用List链表

using System;
using System.Collections.Generic;


using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;


public class Main : MonoBehaviour {
	
	//绘制线段材质
	public Material material;
	
	private List<Vector3> lineInfo;

	// Use this for initialization
	void Start ()
	{
		//初始化鼠标线段链表
		lineInfo = new List<Vector3>();
		
	}
	
	// Update is called once per frame
	void Update ()
	{
		//将每次鼠标经过的位置存储进链表
		lineInfo.Add(Input.mousePosition);
		
	}
	void OnGUI()
	{
		GUILayout.Label("X.Position :" + Input.mousePosition.x);
		GUILayout.Label("Y.Position :" + Input.mousePosition.y);
	}
	//GL的绘制方法系统回调
	void OnPostRender()
	{
		if(!material)
		{
			Debug.LogError("material == null");
			return;
		}
		//材质通道,0为默认。
		material.SetPass(0);
		//绘制2D图像
		GL.LoadOrtho();
		//得到鼠标点信息总数量
		GL.Begin(GL.LINES);
		//遍历鼠标点的链表
		int size = lineInfo.Count;
		
		for(int i =0; i < size - 1;i++)
		{
			Vector3 start = lineInfo[i];
			Vector3 end = lineInfo[i+1];
			//绘制线
			DrawLine(start.x,start.y,end.x,end.y);
		}
		//结束绘制
		GL.End();
		
	}
	
	void DrawLine(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));
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜甲同学

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值