zoukankan      html  css  js  c++  java
  • (四)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);
            }
        }
    }
    
    
  • 相关阅读:
    ViScript 1.0 Released
    How to: 修改程序的拖拽行为
    API Hooking 的原理
    小T历险记
    我的酒窝.NET
    MSN Space
    Naive Container 发布1.0版本
    EFT acceptance and functional testing tool for Windows application
    [译]JavaScript:如何判断值的类型
    [译]JavaScript:多行字符串
  • 原文地址:https://www.cnblogs.com/llstart-new0201/p/12315712.html
Copyright © 2011-2022 走看看