RenderTexture.GetTemporary的width, height参数实验

本文详细解释了Unity中RenderTexture.GetTemporary()方法中width和height参数的作用,如何影响截屏内容的尺寸与范围,以及不同比例下RenderTexture的实际效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity开发里面经常碰到截屏需求

RenderTexture renderTexture = RenderTexture.GetTemporary(width, height, 16);

这句代码数据截屏代码中常用到的一句,其中width, height参数最后决定了什么?

根据传入的宽高比,以高为基准,得到的RenderTexture的显示画面的内容,宽度为高*(宽/高)

图片像素大小为width, height大小

比如:

当前屏幕分辨率是1280 * 720,

传入的参数width, height为500,500(宽高比小于屏幕画面)

那么GetTemporary得到的结果是,首先,传入的参数宽高比为1:1,那么真实最后得到的RenderTexture的画面为,摄像机框内宽720,高720的内容,以视框中心截取。RenderTexture的像素大小为500*500

 

 

当传入的参数为width, height为6000,1500(以高为基准,宽度为高的4倍,已经超出摄像机范围很多了)

那么GetTemporary得到的结果是,首先,传入的参数宽高比为4:1,那么真实最后得到的RenderTexture的画面为,摄像机框的宽2800(超出摄像机范围,但是能截取到超出范围内的内容),高720的内容,以视框中心截取。RenderTexture的像素大小为6000,1500

 

在Unity中,如果你想要移除`RenderTexture`的白色背景使其变为透明,你需要对渲染的结果进行处理。通常的做法是在脚本中创建一个`Post-processing Stack`或者使用自定义的后期处理效果。以下是基本步骤: 1. **获取RenderTexture**: 使用`RenderTexture.GetTemporary`或`RenderTexture.LoadFromRenderTexture`获取你需要修改背景的RenderTexture实例。 ```csharp RenderTexture targetRT = RenderTexture.GetTemporary(RenderTextureFormat.ARGB32); // 或者从其他RenderTexture加载到targetRT targetRT = LoadRenderTextureFromSource(renderTexture); ``` 2. **绘制到RenderTexture**: 在Update或OnRenderImage等合适的地方,先清除背景颜色,然后将场景内容绘制到RenderTexture上。 ```csharp Graphics.Blit(sceneCamera.targetTexture, targetRT, null); // 清除颜色 Graphics.Blit(sceneCamera.targetTexture, targetRT); // 绘制场景 ``` 3. **转换为Alpha通道**: 可能需要通过`Shader`来转换RenderTexture的颜色信息,比如使用`UnpremultiplyAlpha`技术,将颜色值转换为alpha通道。你可以编写一个自定义shader或者使用现成的资源如`Universal Render Pipeline (URP)`或`High Definition Render Pipeline (HDRP)`自带的post-processing节点。 4. **保存为新的RenderTexture**: 渲染完成后,将处理后的RenderTexture保存回一个新的RenderTexture实例,以便后续使用。 ```csharp RenderTexture resultRT = new RenderTexture(targetRT.width, targetRT.height, RenderTextureFormat.ARGB32); Graphics.Blit(targetRT, resultRT); ``` 5. **清理临时RenderTexture**: 最后别忘了释放掉原始的RenderTexture,因为它现在可能不再需要了。 ```csharp RenderTexture.ReleaseTemporary(targetRT); targetRT = null; ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值