码迷,mamicode.com
首页 > 其他好文 > 详细

GL example 1

时间:2015-07-16 21:47:03      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

using UnityEngine;
using System.Collections;

public class joint
{
    public Vector3 org;
    public Vector3 end;
}

public class example : MonoBehaviour
{
    Event e;
    private Vector3 orgPos;
    private Vector3 endPos;
    private bool canDrawLines = false;
    ArrayList posAL;
    ArrayList temppos;
    public Material lineMaterial;
    
    void Start ()
    {
        temppos = new ArrayList ();
        posAL = new  ArrayList ();
    }

    void Update ()
    {
        if (Input.GetMouseButton (0)) {
            canDrawLines = true;  
        }
        if (e.type != null & canDrawLines) {  
            if (e.type == EventType.MouseDown) {  
                orgPos = Input.mousePosition;  
                endPos = Input.mousePosition;  
                
            }  
            if (e.type == EventType.MouseDrag) {  
                endPos = Input.mousePosition;  
                //鼠标位置信息存入数组
                temppos.Add (Input.mousePosition);
                GLDrawLine (orgPos, endPos);  
                orgPos = Input.mousePosition;  
                print (temppos.Count);
            }  
            if (e.type == EventType.MouseUp) {  
                // orgPos=Input.mousePosition;  
                endPos = Input.mousePosition;  
            }  
        }  
        
    }
    
    void GLDrawLine (Vector3 beg, Vector3 end)
    {
        if (!canDrawLines)  
            return;  
        GL.PushMatrix ();  
        GL.LoadOrtho ();  
        
        beg.x = beg.x / Screen.width;  
        end.x = end.x / Screen.width;  
        beg.y = beg.y / Screen.height;  
        end.y = end.y / Screen.height;  
        joint tmpJoint = new joint ();  
        tmpJoint.org = beg;  
        tmpJoint.end = end;  
        
        posAL.Add (tmpJoint);  
        
        lineMaterial.SetPass (0);  
        GL.Begin (GL.LINES);  
        GL.Color (new Color (1, 1, 1, 0.5f));  
        for (int i= 0; i<posAL.Count; i++) {  
            joint tj = (joint)posAL [i];  
            Vector3 tmpBeg = tj.org;  
            Vector3 tmpEnd = tj.end;  
            GL.Vertex3 (tmpBeg.x, tmpBeg.y, tmpBeg.z);  
            GL.Vertex3 (tmpEnd.x, tmpEnd.y, tmpEnd.z);  
        }  
        GL.End ();  
        GL.PopMatrix ();  
    }
    
    void OnGUI ()
    {  
        e = Event.current;  
        
        if (GUI.Button (new  Rect (150, 0, 100, 50), "End Lines")) {  
            ClearLines ();  
        }  
    }

    void ClearLines ()
    {  
        canDrawLines = false;  
        posAL.Clear ();  
    }
    
    void OnPostRender ()
    {  
        GLDrawLine (orgPos, endPos);  
    }   
}

 

GL example 1

标签:

原文地址:http://www.cnblogs.com/jiangjieqim/p/4652460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!