zoukankan      html  css  js  c++  java
  • Unity 通过代码简单实现文理的灰化显示

    1.可以用于纹理的处理,也可用于模型显示的处理(比如某件准备或者服饰未获取的时候,灰化显示)

     线上对比图:

                         

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class TextureGrey : MonoBehaviour
    {
        [SerializeField]
        UITexture tex = null;
    
        Texture2D tex2D = null;
        Vector3 grey = new Vector3(0.299f, 0.587f, 0.114f);  //灰化Shader中的灰度值,具体含义目前不是太清楚
    
        void Start()
        {
            tex2D = tex.mainTexture as Texture2D;
        }
    
        void Update()
        {
            if (Input.GetKeyUp(KeyCode.A))
            {
                //灰化
                Vector3 tempV3 = Vector3.zero;
                if (null != tex2D)
                {
                    Color[] cols = tex2D.GetPixels();
                    for (int i = 0, iMax = cols.Length; i < iMax; ++i)
                    {
                        tempV3.Set(cols[i].r, cols[i].g, cols[i].b);
                        float dot = Vector3.Dot(tempV3, grey);
                        cols[i] = new Color(dot, dot, dot, cols[i].a);
                    }
                    tex2D = new Texture2D(tex2D.width, tex2D.height, TextureFormat.ARGB32, false);
                    tex2D.SetPixels(cols);
                    tex2D.Apply(false);         //实际上传改变后的像素数据到显卡上
                    tex.mainTexture = tex2D as Texture;
                    
                }
            }
        }
    }
    

      

  • 相关阅读:
    安装Hive2及配置HiveSever2
    sqoop语句
    Sqoop配置
    IO流的概述
    List集合的简单使用
    包装类
    访问权限修饰符
    接口
    抽象类
    final关键字
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/7826148.html
Copyright © 2011-2022 走看看