Unity3D中Camera类的RenderWithShader方法和SetReplacementShader方法使用解析

2.2.2 RenderWithShader方法:使用其他shader渲染

基本语法:public void RenderWithShader(Shader shader, string replacementTag);

其中参数shader为要使用的shader;replacementTag 为shader的Tag标示。

功能说明:此方法的作用是可以使用指定的shader来代替当前物体的shader渲染一帧。当replacementTag为空时会替换视口中所有物体的shader。

提示:SetReplacementShader方法与此方法功能相近,不同之处是,SetReplacementShader方法使用指定的shader来替换物体当前的shader,被替换后每一帧都会用替换的shader来渲染物体,而不是只渲染一帧,具体请查看实例演示。

实例演示:下面通过实例演示方法RenderWithShader的使用。

using UnityEngine;
using System.Collections;

public class RenderWithShader_ts : MonoBehaviour
{
    bool is_use = false;
    void OnGUI()
    {
        if (is_use)
        {
            //使用高光shader:Specular来渲染Camera
            camera.RenderWithShader(Shader.Find("Specular"), "RenderType");
        }
        if (GUI.Button(new Rect(10.0f, 10.0f, 300.0f, 45.0f), "使用RenderWithShader启用高光"))
        {
            //RenderWithShader每调用一次只渲染一帧,所以不可将其直接放到这儿
            //camera.RenderWithShader(Shader.Find("Specular"), "RenderType")
            is_use = true;
        }
        if (GUI.Button(new Rect(10.0f, 60.0f, 300.0f, 45.0f), "使用SetReplacementShader启用高光"))
        {
            //SetReplacementShader方法用来替换已有shader,调用一次即可
            camera.SetReplacementShader(Shader.Find("Specular"), "RenderType");
            is_use = false;
        }
        if (GUI.Button(new Rect(10.0f, 110.0f, 300.0f, 45.0f), "关闭高光"))
        {
			//重置摄像机的shader渲染模式
            camera.ResetReplacementShader();
            is_use = false;
        }
    }
}

在这段代码中,首先定义了一个变量is_use用来记录是否启用高光shader,如果is_use为true,则在OnGUI方法中调用方法RenderWithShader来替换已有shader,也可直接使用方法SetReplacementShader来替换已有shader。如果要关闭高光则只需重置shader即调用方法ResetReplacementShader(),并修改is_use值为false,具体显示情况请读者自行运行程序查看。

提示:方法RenderWithShader每调用一次只渲染一帧,故不可直接将其放到GUI的Button中,否则看不出效果。


本文章内容摘自图书《Unity API解析》,源码下载地址:http://www.ituring.com.cn/book/1474

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值