文章目录

  • 1.前言
  • 2.OnRenderImage简介
  • 3.应用示例
    • 3.1 最简单应用
    • 3.2 最基本应用
    • 3.3 完整范例
  • 4.结语

1.前言

Graphics的Blit方法是比较简单也是比较常用的方法。最简单的作用是将一张纹理绘制到另一张纹理中。而在此方法中可以指定一种材质来实现特殊的效果,所以常和OnRenderImage方法配合使用来实现屏幕后处理效果。

2.OnRenderImage简介

void OnRenderImage(RenderTexture src, RenderTexture dest)方法是unity中渲染流程的最后阶段,如果不调用此方法则渲染的图像直接显示到屏幕上(不考虑buffer问题),如果调用则src为获取到的渲染图像,dest则为绘制的目标纹理。调用此方法的脚本需要挂载在含有camera组建的脚本上。

3.应用示例

3.1 最简单应用

下述方法为将camera渲染结果直接绘制到屏幕上,不做任何处理,当然如果这样调用也就没有调用此方法的意义了。

    void OnRenderImage(RenderTexture src, RenderTexture dest){       Graphics.Blit(src, dest);}

3.2 最基本应用

一般应用如下所示,设置某一材质,然后通过材质对src纹理进行处理,并绘制到dest上,但是material要包含_MainTex变量,因为unity会默认将src纹理赋值给_MainTex。

    material.SetFloat("_Brightness", brightness);void OnRenderImage(RenderTexture src, RenderTexture dest){        Graphics.Blit(src, dest, material);}

3.3 完整范例

public class GaussianBlur : PostEffectsBase {public Shader matShader;private Material mat;public Material material {  get {if(mat==null){mat=new Material(matShader)}return mat;}  }[Range(0, 4)]public int iterations = 3;void OnRenderImage (RenderTexture src, RenderTexture dest) {if (material != null) {int rtW = src.widthint rtH = src.heightRenderTexture buffer0 = RenderTexture.GetTemporary(rtW, rtH, 0);buffer0.filterMode = FilterMode.Bilinear;Graphics.Blit(src, buffer0);for (int i = 0; i < iterations; i++) {RenderTexture buffer1 = RenderTexture.GetTemporary(rtW, rtH, 0);Graphics.Blit(buffer0, buffer1, material, 0);RenderTexture.ReleaseTemporary(buffer0);buffer0 = buffer1;buffer1 = RenderTexture.GetTemporary(rtW, rtH, 0);// Render the horizontal passGraphics.Blit(buffer0, buffer1, material, 1);RenderTexture.ReleaseTemporary(buffer0);buffer0 = buffer1;}Graphics.Blit(buffer0, dest);RenderTexture.ReleaseTemporary(buffer0);} else {Graphics.Blit(src, dest);}}
}

4.结语

此方法应用就是如此简单。

(八)Grahpics之Blit相关推荐

  1. (三)Grahpics之Blit

    1.前言 Graphics的Blit方法是比较简单也是比较常用的方法.最简单的作用是将一张纹理绘制到另一张纹理中.而在此方法中可以指定一种材质来实现特殊的效果,所以常和OnRenderImage方法配 ...

  2. Python编写微信打飞机小游戏(八)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  3. 八、Python基础(综合演练:飞机大战)

    八.Python基础(综合演练:飞机大战) 目录: 八.Python基础(综合演练:飞机大战) 一.模块 1.利用 pip 安装 pygame 模块 2.图片素材下载 二.pygame 模块初识 1. ...

  4. 《将要淘汰的八种人》读后感

    前言: 将要淘汰的八种人http://blog.sina.com.cn/s/blog_638066ee0100nvis.html (不景气的社会,一定会淘汰不争气的人.如何不被淘汰,只要你不在八种之内 ...

  5. 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

    目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...

  6. 2021年大数据ELK(八):Elasticsearch安装IK分词器插件

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装IK分词器 一.下载Elasticsearch IK分词器 ...

  7. 2021年大数据Kafka(八):Kafka如何保证数据不丢失

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka如何保证数据不丢失 一.如何保证生产者数据不丢失 ...

  8. 2021年大数据HBase(八):Apache Phoenix的基本介绍

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 前言 系列历史文章 Apache Phoenix的基本介绍 Apache ...

  9. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

最新文章

  1. 从证书中导出公钥并存放到项目中
  2. 使用 Scrum开发太阳能汽车
  3. 7月国内手机出货量3419.9万部 5G手机果然还是很少!
  4. Java中的volatile的作用和synchronized作用
  5. 局域网电脑Sql2008 R2无法连接到localhost 解决方案
  6. eventlistener java_EventListener原理
  7. ubuntu 9.10修改grub启动项的方法
  8. 瓜子二手车:急招IoT架构师,相当阿里P9
  9. 个人PHP博客开源代码下载推荐!免费
  10. mentohust 使用
  11. 前沿科技赋能教育,掌门优课创新教学体验
  12. 横河DLM2000示波器连接电脑
  13. 如何快速写作论文初稿?
  14. 讲一点有技术含量的东西(一)
  15. JAVA EE框架课程考点复习(大题和判断题)
  16. P1941 [NOIP2014 提高组] 飞扬的小鸟
  17. SpringBoot开启定时任务
  18. LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档
  19. Waymo SOTA!SparseKD:高效知识蒸馏下的3D检测(港大NIPS2022)
  20. 怎么查看vue和vue-cli(脚手架)的版本?

热门文章

  1. Win7虚拟机无法连接网络怎么办?已解决!!
  2. win10-未知的USB设备-解决自己问题的记录
  3. 008 触发器实现三分频
  4. 百度“文心一言”首批生态合作伙伴公布,Moka接入打造人力资源数字化人AI服务
  5. 多进程与多线程的区别,和用途
  6. 传智播客WPF视频 第二节
  7. 深入学习Docker网络(看这篇就完全够了)
  8. 随手记录导入导出功能
  9. 玩转iOS开发:iOS 10 新特性《Siri Kit Intents Extension UI》
  10. “数据”企业之命脉,守护有责。