grahphics_blitz

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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.width int rtH = src.height RenderTexture 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 pass Graphics.Blit(buffer0, buffer1, material, 1); RenderTexture.ReleaseTemporary(buffer0); buffer0 = buffer1; } Graphics.Blit(buffer0, dest); RenderTexture.ReleaseTemporary(buffer0); } else { Graphics.Blit(src, dest); } } } 

4.结语

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167224.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lombok插件安装 idea 搜不到_idea本地安装lombok插件失败

    lombok插件安装 idea 搜不到_idea本地安装lombok插件失败注:此处我是针对2019.3版本,其他版本可能不一样方法一:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O3dR50Jw-1594555693053)(https://raw.githubusercontent.com/bakabakabeng/PicGoStore/master/img/20200712194124.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9ZCeMfs-1594555693079)(https://

    2025年10月3日
    3
  • CColor类封装[建议收藏]

    CColor类封装2.Color.cpp

    2021年12月18日
    51
  • 网盘资料

    网盘资料

    2021年10月9日
    48
  • BIST

    BISTBIST即是在设计时在电路中植入相关功能电路用于提供自我测试功能的技术,BIST把测试仪的部分功能转移到电路内部,用嵌入到电路中的测试电路提供输入测试向量和分析响应的功能,最后输出简单的测试结果。根据被测试的对象不同,BIST测试分为LogicBIST和MemoryBIST。LogicBIST原理结构:实现方法一般基于STUMPS结构,包含测试向量生成模块PRPG、响应分析模块M

    2025年8月20日
    4
  • Python基础教程(crossin全60课)[通俗易懂]

    Python基础教程(crossin全60课)[通俗易懂]【Python第第11 课】安装………………………………………………………………………………………………….4【Python第第22 课】print………………………….

    2022年10月12日
    3
  • JAVA运用dos命令强制删除文件夹

    JAVA运用dos命令强制删除文件夹在对文件夹进行操作时,如果用file.deleate()方法,有时候恐怕不凑效.用了第三方的FileUtils的forceDeleteFile()还是不凑效,所以,自己就用java写一个基于dos命令的方法来实现强制删除文件夹.这并没有什么难的,只要知道dos命令,在java文件中调用runtime就好办了.在这里为写了三个方法:删除某个文件目录;删除某个文件(不是文件夹)和清空某个文件夹下

    2022年6月8日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号