[Unity基础]RenderTexture
参考链接:
https://www.cnblogs.com/Jimm/p/5951362.html
一.相关API
1.Texture2D.ReadPixels
从RenderTexture.active中复制像素,以左下角为原点。
2.MonoBehaviour.OnPostRender
当相机渲染完所有物体就会调用该方法,并且只有当这个脚本挂在相机时才会调用。
二.测试
新建一个场景,新建一个camera和一个go,把go设置为一个单独的层,让camera单独照这个层,主camera不要照这个层。调整camera的深度和targetTexture。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.IO; public class TestRenderTexture : MonoBehaviour { public Camera camera;
public RawImage rawImage;
bool isScreenShot = false; void Update()
{
//将镜头的画面保存到本地
if (Input.GetKeyDown(KeyCode.Q))
{
Texture2D tex = RenderTexture2Texture2D(camera.targetTexture); //展示
rawImage.texture = tex; //保存到本地
byte[] bytes = tex.EncodeToPNG();
File.WriteAllBytes(Application.dataPath + "/RenderTexture/Test.png", bytes);
UnityEditor.AssetDatabase.Refresh();
} //屏幕截图(方法1)
if (Input.GetKeyDown(KeyCode.W))
{
StartCoroutine(ScreenShotIEnumerator());
} //屏幕截图(方法2)
if (Input.GetKeyDown(KeyCode.E))
{
isScreenShot = true;
}
} public IEnumerator ScreenShotIEnumerator()
{
yield return new WaitForEndOfFrame();
rawImage.texture = ScreenShot();
} private void OnPostRender()
{
//Debug.Log("OnPostRender");
if (isScreenShot)
{
isScreenShot = false;
rawImage.texture = ScreenShot();
}
} //屏幕截图
public Texture2D ScreenShot()
{
Texture2D tex = new Texture2D(Screen.width, Screen.height, TextureFormat.ARGB32, false);
tex.ReadPixels(new Rect(, , Screen.width, Screen.height), , );
tex.Apply();
return tex;
} //RenderTexture转Texture2D
public Texture2D RenderTexture2Texture2D(RenderTexture rt)
{
RenderTexture preRT = RenderTexture.active;
RenderTexture.active = rt;
Texture2D tex = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false);
tex.ReadPixels(new Rect(, , rt.width, rt.height), , );
tex.Apply();
RenderTexture.active = preRT;
return tex;
}
}
[Unity基础]RenderTexture的更多相关文章
- Unity基础6 Shadow Map 阴影实现
这篇实现来的有点墨迹,前前后后折腾零碎的时间折腾了半个月才才实现一个基本的shadow map流程,只能说是对原理理解更深刻一些,但离实际应用估计还需要做很多优化.这篇文章大致分析下shadow ma ...
- unity 基础之InputManager
unity 基础之InputManager 说一下unity中的InputManager,先截个图 其中Axes指的是有几个轴向!Size指的是有几个轴,改变Size可以添加或者减少轴! Name指 ...
- unity 基础学习 transform
unity 基础学习 transform 1.unity采用的是右手坐标系,X轴右手为+,Y轴向上为+,Z轴朝里为+; 但是我们从3D MAX中导入模型之后,发现轴向并没有遵从这个原理, 其实是 ...
- Unity 基础
Unity 基础是unity入门的关键.他将讲解Unity的界面, 菜单项,使用资源,创设场景,并发布版本. 当你读完这段,你将理解unity是怎么工作的,如何有效地使用它,并且完成一个基本的游戏. ...
- NET笔记——IOC详解和Unity基础使用介绍
说起IOC,可能很多初学者不知道是用来做什么的,今天正好有点时间,就来扫扫盲,顺便巩固下自己. IOC全称是Inversion Of Control,意为控制反转(这些自然百度也有),可什么是控制反转 ...
- IOC详解和Unity基础使用介绍
说起IOC,可能很多初学者不知道是用来做什么的,今天正好有点时间,就来扫扫盲,顺便巩固下自己. IOC全称是Inversion Of Control,意为控制反转(这些自然百度也有),可什么是控制反转 ...
- unity基础命令
获取所挂脚本元素的组件: rd = GetComponent<Rigidbody>(); 获取其他元素的组件: rd = GameObject.Find("Player" ...
- 【Unity Shader学习笔记】Unity基础纹理-法线贴图
1 高度纹理 使用一张纹理改变物体表面法线,为模型提供更多细节. 有两种主要方法: 1.高度映射:使用一张高度纹理(height map)来模拟表面位移(displacement).得到一个修改后的法 ...
- Unity基础知识学习笔记二
1,object Instantiate(object original,Vector3 position,Quaternion rotation) 克隆原始物体,并返回克隆物体. ...
随机推荐
- Spring学习之SpringMVC框架快速搭建实现用户登录功能
引用自:http://blog.csdn.net/qqhjqs/article/details/41683099?utm_source=tuicool&utm_medium=referral ...
- RedHat6.5安装kafka单机
版本号: Redhat6.5 JDK1.8 zookeeper-3.4.6 kafka_2.11-0.8.2.1 1.软件环境 已经搭建好的zookeeper: RedHat6.5 ...
- [转]windows环境下使用virtualenv对python进行多版本隔离
windows环境下使用virtualenv对python进行多版本隔离 最近在用python做一个文本的情感分析的项目,用到tensorflow,需要用python3的版本,之前因为<机器学习 ...
- idea下的调试配置
react和ts的整合 https://github.com/Microsoft/TypeScript-React-Starter vue的 https://github.com/ducksoupde ...
- DS二叉树--二叉树构建与遍历
题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历.中序遍历和后序遍历结果 输入 第一 ...
- Google 新实现的Protobuf RPC: grpc
转自: http://www.dongliu.net/post/622450 Google 刚刚开源了grpc, 一个基于HTTP2 和 Protobuf 的RPC 实现. Protobuf 本身虽 ...
- HTML-Ronoob-基础教程:HTML 字符实体
ylbtech-HTML-Ronoob-基础教程:HTML 字符实体 1.返回顶部 1. HTML 中的预留字符必须被替换为字符实体. HTML 实体 在 HTML 中,某些字符是预留的. 在 HTM ...
- 查看设备uuid的命令-blkid
查看设备uuid的命令-blkid 在关联/etc/fstab的时候可以使用 [root@mapper ~]# blkid /dev/sda1: UUID="285510be-b19 ...
- Linux下自制回收站
Linux下自制回收站 相信熟悉linux系统的人都知道rm的厉害,也大都听说过有rm造成的生产事故,本文将详细介绍如何在linux环境下制作回收站以避免数据误删除,如何恢复回收站中的数据,如何查看回 ...
- 禅道在docker上部署与迁移
一.禅道部署 1.下载地址 禅道开源版: http://dl.cnezsoft.com/zentao/docker/docker_zentao.zip 数据库用户名: root,默认密码: 123 ...