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 = 0; 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(0); //刷新当前材质
        GL.LoadPixelMatrix();//设置pixelMatrix
        GL.Color(Color.yellow);
        GL.Begin(GL.LINES);

        //画2次,奇偶数画连续折线法
        for (int i = 0; i < pointList.Count; i++)
        {
            GL.Vertex3(pointList[i].x, pointList[i].y, 0);
        }
        for (int i = 1; i < pointList.Count; i++)
        {
            GL.Vertex3(pointList[i].x, pointList[i].y, 0);
        }
      //单次画线发
        //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
    }
}

原文地址:https://www.cnblogs.com/sanyejun/p/9217613.html

时间: 2024-10-13 22:11:59

Unity GL画折线的相关文章

Unity GL 画圆

Unity下GL没有画圆的函数,只能自己来了. 如果能帮到大家,我也很高兴. 虽然没有画圆的函数,但是能画直线,利用这一点,配合微积分什么的,就可以画出来了.反正就是花很多连在一起的直线,每条直线足够短的时候,就足够圆了 1 void DrawCircle(float x, float y, float z, float r, float accuracy) 2 { 3 GL.PushMatrix (); 4 //绘制2D图像 5 GL.LoadOrtho (); 6 7 float strid

unity GL画线

对某篇文章加以修改.把这个脚本挂到相机下,才能显示. using UnityEngine; using System.Collections; public class joint{ public Vector3 org; public Vector3 end; } public class Drawline : MonoBehaviour { private Vector3 orgPos; private Vector3 endPos; private bool canDrawLines  =

unity 画折线图,饼型图插件

在unity中画折线图,和饼型图等数据分析图是很困难 的一件事,幸好我找到了一个插件很方便的解决了这件事,效果如下图: 折线图,饼型图,等. 运行效果如下: 百度网盘下载地址:链接:https://pan.baidu.com/s/10oLG1Zmffv7ASWG0pvx05w 提取码:lub1 如果链接失效,请留言. 原文地址:https://blog.51cto.com/14058389/2425723

unity3d GL画线/物体跟随/坐标系转换

看见标题的人是不是在想... 一个小小的GL画线难吗? 一个小小的物体跟随难吗? 嗯,的确,一点不难.... 我一开始也是像你们那样想的,但是实际操作起来,还是和理论有区别的 写这个demo起因是这样的: 面试到了一家虚拟现实的公司,因为没有去公司 网上直接谈的,谈妥了hr估计是想看看我能不能胜任 给了我一张效果图,让我去实现画线的功能 咳咳,要求还是比较细致的,这里我们后面说 废话不多说,老规矩,先上效果图,然后直接进入主题 第一张是hr给我的图,第二张是我自己实现的 需求如下: 1.模型是旋

python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指正. 一.最简单的基本框架如下:已知x,y,画出折线图并保存.此时x和y均为数字. 1 # -*- coding: utf-8 -*- 2 3 import matplotlib.pyplot as plt #引入matplotlib的pyplot子库,用于画简单的2D图 4 import random 5

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.hideturtle() drawLine(t,0,0,300,0) #画x轴 drawLine(t,0,0,0,175) #画y轴 #画折线 for i in range(6): drawLineWithDots(t,40 + (40 * i),15 * yValues[i],40 + (40 * (i+1

echarts入门基础,画折线图

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .box{ transform: translate(50%,50%); -webkit-transform: translate(-50%,-50%); -moz-transform: transla

Android画折线图、柱状图、饼图(使用achartengine.jar)

自从用了画折线的jar包之后,就不想再用canvas画布去画了,编程就是要站在巨人的肩膀上. 所需要的jar包achartenginejar 折线代码布局文件就不上传了很简单 另一种线的渲染器 扇形图代码 柱状图代码 属性总结部分代码 新测试代码下载地址 所需要的jar包:achartengine.jar 下载地址:http://download.csdn.net/detail/zhengyikuangge/9460642 折线代码(布局文件就不上传了,很简单): package com.exa

IOS使用Core-Plot画折线图

关于Core-Plot的配置,大家可以参考我的上一篇博客:http://1.wildcat.sinaapp.com/?p=99 版权所有,转载请注明原文转自:http://blog.csdn.net/wildcatlele/article/details/25483923 大家可以到:http://1.wildcat.sinaapp.com/?p=102观看本篇博客更友好的排版格式 或者你英语好也可以参考github上的wiki介绍:https://code.google.com/p/core-