(四)GL动态画线

1.前言

本文通过GL类实现一个动态画线功能,即鼠标每点击一下,会画出一条线,同时会出现一条动态线。

2.代码

由于通过input类获取到的鼠标坐标为屏幕像素值,所以线的坐标也为像素坐标,所以实在屏幕空间下进行绘制。

using System.Collections;
using System.Collections.Generic; using UnityEngine; public class Graphics04GLDrawLineDynamic : MonoBehaviour { private Material glMat; private List<Vector3> points = new List<Vector3>(); private void SetMaterialPass() { if (glMat == null) { glMat = new Material(Shader.Find("Hidden/Internal-Colored")); } glMat.SetPass(0); } private void OnRenderObject() { if (points.Count != 0) { SetMaterialPass(); DrawLines(); } } private void DrawLines() { GL.PushMatrix(); GL.LoadPixelMatrix(); GL.Begin(GL.LINES); GL.Color(Color.red); for (int i = 0; i < points.Count - 1; i++) { GL.Vertex(points[i]); GL.Vertex(points[i + 1]); } GL.Vertex(points[points.Count - 1]); GL.Vertex(Input.mousePosition); GL.End(); GL.PopMatrix(); } private void Update() { if (Input.GetMouseButtonDown(0)) { points.Add(Input.mousePosition); } } } 

猜你喜欢

转载自www.cnblogs.com/llstart-new0201/p/12315712.html