Unity3D C#获取Texture2D像素数据IntPtr指针

这篇具有很好参考价值的文章主要介绍了Unity3D C#获取Texture2D像素数据IntPtr指针。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity3D调用C++库执行图像处理时,需要快速传递Texture2D纹理像素数据块,获取数据块C++指针(C#中用IntPtr表示)
代码如下

  /*
   * 对象转为指针 
   * */
  public System.IntPtr GetIntPtr<T>(T obj)
  {
    System.Runtime.InteropServices.GCHandle handle = default(GCHandle);
    try
    {
      handle = System.Runtime.InteropServices.GCHandle.Alloc(obj, System.Runtime.InteropServices.GCHandleType.Pinned);
      return handle.AddrOfPinnedObject();
    }
    finally
    {
      if (handle != default(System.Runtime.InteropServices.GCHandle))
      {
        handle.Free();
      }
    }
  }

案例文章来源地址https://www.toymoban.com/news/detail-557756.html

      RenderTexture saveRT = RenderTexture.active;
      RenderTexture.active = renderTexture;
      sampleTexture.ReadPixels(new Rect(0, 0, sampleTexture.width, sampleTexture.height), 0, 0);
      RenderTexture.active = saveRT;
      sampleTexture.Apply();

      Color32[] colors = sampleTexture.GetPixels32();
      SendFrame32(GetIntPtr(colors), sampleTexture.width, sampleTexture.height, 0);

到了这里,关于Unity3D C#获取Texture2D像素数据IntPtr指针的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity3D】Unity 脚本 ③ ( C# 脚本的执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体的 Transform 组件数据 | UnityEngine 命名空间简介 )

    在 C# 脚本中控制 游戏物体 GameObject 运动 , 要先获取该物体 , 然后 修改其 Transform 组件的属性 ; 在 游戏开始运行后 , 会自动执行 游戏物体 GameObject 上的 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要的内容都在 Start() 函数 中实现 ; 在 C# 脚本中 , 游戏物体

    2023年04月12日
    浏览(52)
  • 【Unity3D热更新】Unity3D 零成本、高性能的C#的热更新框架:HybridCLR

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 相信只要做过热更新的小伙伴,都被热更新搞过心态吧。 我有一个小伙伴,本来是面向

    2024年01月16日
    浏览(36)
  • 【Unity3D】Unity3D 软件安装 ( 注册账号并下载 Unity Hub | 安装 Unity Hub | 获取个人版授权 | 中文环境设置 | 安装 Unity3D 编辑器 )

    Unity 官方网站 : 英文 : https://unity.com 中文 : https://unity.cn 进入 中文网站 https://unity.cn , 点击右上角的 \\\" 下载 Unity \\\" 按钮 ; 推荐下载 Unity3D 的长期支持版本 ; 点击界面中的 \\\" 下载 Unity Hub \\\" 选项 ; 根据你的系统 , 选择对应的 Unity Hub , 我在 Windows 上开发 , 因此选择 \\\" Windows 下载 \\\"

    2024年01月25日
    浏览(62)
  • 【Unity3D】获取子组件方法汇总

    一、遍历获取一级子组件(不包括子组件的子组件) 二、获取所有子组件(包括子组件的子组件)   三、通过数组下标获取指定子组件

    2024年02月11日
    浏览(30)
  • Unity3D 获取子孙物体并修改材质球属性

    如图要获取划线物体并修改其材质球: private Transform[] FindChild; public Material ChangeMat;//变换后的材质球 private Material mat; void Start() {         FindChild = this.gameObject.GetComponentsInChildrenTransform(true);//true表示包括隐藏物体的查找         foreach (Transform child in FindChild)         {  

    2024年02月15日
    浏览(37)
  • Unity3D中的C#协程(概念、使用方法、底层原理)

             Unity3D 中的协程是针对 Unity3D 框架和 C# 编程语言定制的 ,具有便捷的使用方式和良好的效率。其他语言Python、Lua等也支持协程,但是底层实现的细节可能不同。在 Unity3D 引擎中, 协程被 Unity3D 引擎的主循环所驱动 。         协程(Coroutine)是一种编程概念

    2024年02月08日
    浏览(38)
  • C#的Random与Unity3D的Random.Range()

    目录 C#的Random Unity3D的Random.Range() 在C#中,Random类用于生成伪随机数。它位于System命名空间下,所以要在代码中使用Random类,需要添加以下using语句: 在创建Random对象时,可以选择使用当前时间作为种子,也可以指定一个整数值作为种子。如果使用相同的种子来创建Random对象,

    2024年02月16日
    浏览(25)
  • 【Unity3D自学记录】开发PicoVR之获取手柄的方法

    获取手柄有两种方法,一种是XR的方法,一种是PicoSDK中的方法。 第一种,XR方法 第二种是PicoSDK中的方法

    2024年02月17日
    浏览(29)
  • Cesium 1.02.0 及以上版本下自定义材质报错:[Cesium WebGL] Fragment shader compile log: ERROR: 0:8: ‘texture2D‘

    2023年4月19日更新— 搞了一个 Cesium 镜像,欢迎使用:沙盒示例 和 API 在看到 Cesium 官方更新的日志, 最新版(1.103.0) 支持平滑缩放,于是升级尝试一下。 结果偶然发现,之前写的 墙体动态效果报错 ,经过调试,找到原因, Cesium 新版对 WebGL2 支持有变化 ,这里记录一下。

    2024年02月11日
    浏览(27)
  • Unity3D高级编程主程手记 学习笔记二:C#技术要点

    1.Untiy3D中C#的底层原理 Unity底层在运行C#程序时有两种机制:一种是Mono,另一种是IL2CPP。 Mono存在的目的是为了跨平台 ,因为最初C#只支持Windows。而IL可以看成是一种汇编语言且完全基于堆栈,必须运行在虚拟机上。也就是说C#会被编译器编译成IL,当需要他们时就会被实时的

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包