当前位置: 首页 > article >正文

Unity 贴图拷贝与性能对比

Cooooopy

  • 🌳GetPixels
  • 🌳GetRawTextureData
  • 🌳RenderTexture
  • 🌳Graphics.CopyTexture
  • 🌭性能对比

🌳GetPixels

 var pixels = tex.GetPixels();
 tex2.SetPixels(pixels);
 tex2.Apply();

🌳GetRawTextureData

 var pixels = tex.GetRawTextureData();
 tex2.LoadRawTextureData(pixels);
 tex2.Apply();

🌳RenderTexture

public static void textureToTexture2D(Texture texture, Texture2D texture2D)
{
    if (texture == null)
        throw new ArgumentNullException("texture");

    if (texture2D == null)
        throw new ArgumentNullException("texture2D");

    if (texture.width != texture2D.width || texture.height != texture2D.height)
        throw new ArgumentException("texture and texture2D need to be the same size.");

    RenderTexture prevRT = RenderTexture.active;

    if (texture is RenderTexture)
    {
        RenderTexture.active = (RenderTexture)texture;
        texture2D.ReadPixels(new UnityEngine.Rect(0f, 0f, texture.width, texture.height), 0, 0, false);
        texture2D.Apply(false, false);
    }
    else
    {
        RenderTexture tempRT = RenderTexture.GetTemporary(texture.width, texture.height, 0, RenderTextureFormat.ARGB32);
        Graphics.Blit(texture, tempRT);

        RenderTexture.active = tempRT;
        texture2D.ReadPixels(new UnityEngine.Rect(0f, 0f, texture.width, texture.height), 0, 0, false);
        texture2D.Apply(false, false);
        RenderTexture.ReleaseTemporary(tempRT);
    }

    RenderTexture.active = prevRT;
}

🌳Graphics.CopyTexture

不需要apply!!!

Graphics.CopyTexture(tex1, tex2);

🌭性能对比

在测试环境每帧调用 把Texture2D拷贝到另一张Texture2D上。

Methodcpu (基于已有工程测试,只改变拷贝方法)
GetPixels20.3ms
RenderTexture7.9ms
GetRawTextureData8.8ms
Graphics.CopyTexture5.2ms

http://www.kler.cn/a/282285.html

相关文章:

  • RT-Thread 星火1号学习笔记
  • 使用Axios函数库进行网络请求的使用指南
  • uniapp自动注册机制:easycom
  • Codeforces Round 987 (Div. 2) ABCD
  • Linux(CentOS)安装达梦数据库 dm8
  • 《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人
  • 【SpringCloud Alibaba】(八)学习 Sentinel 核心技术与配置规则(下)
  • Spring的单例模式
  • C# list根据动态字段排序
  • 【目标检测】YOLOV2
  • 信息安全(密码学)---数字证书、kpi体系结构、密钥管理、安全协议、密码学安全应用
  • 基于my Batis优化图书管理系统(二)
  • MySQL笔记(大斌)
  • linux-centos7 服务器上redis服务已经启动,但是宿主机无法访问,报错:connect timeout
  • MT5016A-ASEMI无人机专用整流桥MT5016A
  • 鸿蒙上架流程
  • 【WPF】WPF学习路线
  • Python-MNE-源空间和正模型03:自动源配准的方法
  • 鸿蒙开发入门day15-焦点事件
  • 【亲测有效】icmp,tcpping工具源码
  • 关于vue2运行时filemanager-webpack-plugin报错isFile is undefind
  • mysql数据库数据的批量插入
  • js传递long类型存在精度丢失
  • SpringBoot日志管理 —— 解决Logback生成 “LOG_PATH_IS_UNDEFINED“ 文件夹问题
  • webpack4手动搭建Vue项目
  • 光学涡旋Talbot阵列照明器的matlab模拟与仿真