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

Unity 使用Blit生成图片踩的坑

引言

  在项目中经常需要把shader处理过的纹理保存成图片,如果直接获取材质的源纹理并保存,保存的是未经shader处理的原始纹理。有一种方法是使用Unity中的Blit函数读出经shader处理后的纹理,再保存成图片。但在Blit的使用中,保存的图片常常是黑色(像素是(0,0,0,255)),做了很多尝试,最后成功保存了图片,为此将Blit踩的坑记录在此。

内容

Blit函数的基本逻辑

  Blit函数的一般用法是Blit(src, dst, mat),给定原纹理、目标纹理和材质,将结果渲染到目标纹理上,然后将RenderTexture类型的目标纹理保存成图片(如png格式,本文最后保存成png图片)。

Blit函数用法实例

  • 错误1

  问题:材质使用的shader中使用了矩形裁剪,会导致保存图片是黑色。Blit不会设置顶点坐标,因此会导致片元全部被裁剪掉。手动给shader中的_ClipRect传递参数new Vector4(0f, 0f, 1f, 1f),不会影响原本的UI矩形遮罩效果,保存图片正常。

public RenderTexture GetColorImgTex(int size)
{RenderTexture tempRT = new RenderTexture(size, size, 0, RenderTextureFormat.ARGB32);tempRT.Create();this.colorImage.material.SetTexture("_MainTex", MaskGenerator.Instance.maskExpandTex); Vector4 uvRect = new Vector4(0f, 0f, 1f, 1f);           // 防止裁剪问题this.colorImage.material.SetVector("_ClipRect", uvRect);//Graphics.Blit(MaskGenerator.Instance.maskExpandTex, tempRT, this.colorImage.material);      Graphics.Blit(null, tempRT, this.colorImage.material);return tempRT;
}
  • 错误2

  this.colorImage.material材质原本有我需要的源纹理,按照一般的逻辑,Blit中的src可以置为null,但这样也会生成黑色的图片,解决方式是需要设置原纹理,两种方式都有效:给材质设置源纹理,或者在Blit中设置源纹理。

this.colorImage.material.SetTexture("_MainTex", MaskGenerator.Instance.maskExpandTex); 
//或者
Graphics.Blit(MaskGenerator.Instance.maskExpandTex, tempRT, this.colorImage.material);  
  • 错误3

  定义的RenderTextureARGB格式需要和保存图片定义的纹理定义的格式一致,不一致也会导致生成图片是黑色。这里全部设置成ARGB32就能正确保存图片了。

public RenderTexture BlendTexture(RenderTexture background, int size)
{Texture2D foreground = MaskGenerator.Instance.previewTex;RenderTexture rt = new RenderTexture(size, size, 0, RenderTextureFormat.ARGB32);rt.Create();Material blendMat = Resources.Load<Material>("Material/Blend");         // 透明度混合blendMat.SetTexture("_MainTex", foreground);blendMat.SetTexture("_BgTex", background);Graphics.Blit(null, rt, blendMat);return rt;
}
  • 其他无效尝试

  网上有说法是在Blit时,设置RenderTexture.active,试过无效,应该是Blit时就已经将dst参数纹理设置成目标了,无需使用RenderTexture.active = rt;
RenderTexture保存成png格式图片的代码,需要在下面代码中的texture定义时,设置纹理编码格式与上文目标纹理一致。

public void SaveRenderTexToPNG(RenderTexture renderTexture, string filePath)
{if (renderTexture == null){Debug.LogError("RenderTexture为空,无法保存");return;}//注意纹理编码格式Texture2D texture = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false);      RenderTexture previousActiveRT = RenderTexture.active;          // 保存当前活动的RenderTextureRenderTexture.active = renderTexture;                           // 设置传入的RenderTexture为活动状态,以便读取其内容texture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);texture.Apply();RenderTexture.active = previousActiveRT;                        // 恢复之前的活动RenderTexture// 编码为PNG并保存byte[] bytes = texture.EncodeToPNG();//testRawImage2.texture = texture;System.IO.File.WriteAllBytes(filePath, bytes);Debug.Log($"RenderTexture已保存至: {filePath}");// 清理临时Texture2DGameObject.Destroy(texture);
}

小结

  在使用Blit函数中不会报错,但也得不到最终想要的结果,常常输出黑色图片。在使用Blit时需要注意的细节还很多。

http://www.jsqmd.com/news/50649/

相关文章:

  • P14568 【MX-S12-T3】排列
  • 2025年辊压磨批发厂家权威推荐榜单:超细环辊磨/环辊磨粉机/辊压磨设备源头厂家精选
  • SQL分区裁剪 - --
  • 2025 防水型压力传感器十大品牌推荐:硬核防护,赋能多元场景
  • 2025年防爆仪表箱品牌权威推荐榜单:防爆接线箱/防爆控制箱/防爆正压柜源头厂家精选
  • 2025年温度监控系统直销厂家权威推荐榜单:炉温仪‌/测厚仪‌/炉温测试仪‌源头厂家精选
  • 2025年包头钢材/无缝钢管/螺纹管/型材/钢板行业场实力厂家盘点:优质源头厂家精选指南
  • 2025 最新太原山西菜馆推荐!权威测评认证的山西菜馆排行榜,探寻非遗传承与地道风味的匠心之选
  • connect()前两个参数是什么?
  • 咱鹤壁家长补课不踩坑!2026年鹤壁一对一辅导机构最新测评榜单
  • 完整教程:PyTorch CV模型实战全流程(二)
  • 2025 儿童镜框十大品牌推荐,近视防控适配首选榜单
  • 2025年纸鞋撑机械制造企业权威推荐榜单:自动纸鞋撑机‌/纸鞋撑设备‌/鞋撑定型机械设备‌源头厂家精选
  • 如何快速低成本自建埋点系统?基于ClkLog的开源解决方案
  • 2025年可提升式管式曝气器企业权威推荐榜单:可提升曝气器/可提升微孔曝气器/可提升式曝气器源头厂家精选
  • 完整教程:程序员收藏!AI大模型教程(全面详解)从入门到精通,一篇就够了!
  • iar stm32 cubemx 报错解决备忘录 :failed to get cpu status after 4 retries retry
  • 2025 年 11 月中国水泵厂家权威推荐榜:消防/多级/自吸/磁力/排污/真空/离心/卧式水泵品牌实力与创新技术深度解析
  • 2025年磷酸氢二钠批发厂家权威推荐榜单:磷酸二氢钠/磷酸供货厂家/磷酸氢二钾源头厂家精选
  • 2025年磷酸氢二钠制造商厂家权威推荐榜单:磷酸优质厂家/磷酸氢二钾/草酸制造商精选
  • 详细介绍:【JUnit实战3_13】第八章:mock 对象模拟技术在细粒度测试中的应用(上)
  • 2025年行业内评价好的火锅哪家好吃排行榜,特色美食/烧菜火锅/老火锅/火锅店/社区火锅/美食/火锅回头客多的哪家好
  • 植物大战僵尸融合版下载安装教程:详细步骤与新版玩法解析
  • 2025 年冷凝器厂家最新推荐排行榜:列管 / 不锈钢 / 壳管式冷凝器优质品牌权威指南
  • 2025年江苏电梯CUTR认证机构权威推荐榜单:江苏个人防护用品CUTR认证/江苏医疗器械CUTR认证/江苏建材CUTR认证服务提供商精选
  • 2025 年 11 月切膜机厂家权威推荐榜:自动/激光/高速/智能/全自动/工业切膜机,精准高效切割技术助力生产升级
  • 2025 年 11 月标签机厂家权威推荐榜:自动进纸/不干胶/工业条码/电脑小型标签机,高效精准打印与耐用性能深度解析
  • 2025 最新反应釜厂家推荐榜:聚焦专业服务与市场口碑的权威甄选指南衬四氟/化工/夹套/搅拌/树脂/高速/远红外反应釜公司推荐
  • 2025年轴流风机散热风扇网罩定做厂家权威推荐榜单:防鼠网耐用耐腐蚀‌/304不锈钢风机罩‌/喷塑风机防护网耐腐蚀耐锈‌源头厂家精选
  • 【完结20章】MasterGo AI+Cursor辅助开发多模态全栈项目