前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >grahphics_blitz

grahphics_blitz

作者头像
全栈程序员站长
发布2022-09-20 14:50:11
1740
发布2022-09-20 14:50:11
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

1.前言

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

2.OnRenderImage简介

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

3.应用示例

3.1 最简单应用

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

代码语言:javascript
复制
    void OnRenderImage(RenderTexture src, RenderTexture dest) { Graphics.Blit(src, dest); } 

3.2 最基本应用

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

代码语言:javascript
复制
    material.SetFloat("_Brightness", brightness); void OnRenderImage(RenderTexture src, RenderTexture dest) { Graphics.Blit(src, dest, material); }

3.3 完整范例

代码语言:javascript
复制
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.cn/167224.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言
  • 2.OnRenderImage简介
  • 3.应用示例
    • 3.1 最简单应用
      • 3.2 最基本应用
        • 3.3 完整范例
        • 4.结语
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档