source | 源纹理。 |
dest | 目标 RenderTexture。设置为 null 将直接对屏幕执行 blit 操作。有关更多信息,请参阅“说明”。 |
mat | 要使用的材质。例如,材质的着色器可以执行一些后期处理效果。 |
pass | 如果为 -1(默认值),绘制材质中的所有通道。否则,仅绘制给定通道。 |
offset | 应用于源纹理坐标的偏移。 |
scale | 应用于源纹理坐标的缩放。 |
使用着色器将源纹理复制到目标渲染纹理。
主要用于实现 post-processing effects。
Blit 将 dest
设置为渲染目标,在材质上设置 source
_MainTex
属性,
并绘制全屏四边形。
如果 dest
为 /null/,则将屏幕后备缓冲区用作 blit 目标,除非主摄像机当前设置为渲染到 RenderTexture(即 Camera.main 具有非 null 的 targetTexture
属性)。如果是这种情况,blit 使用主摄像机的渲染目标作为目标。为确保 blit 的操作目标确实为屏幕后备缓冲区,在调用 Blit 前请务必将 /Camera.main.targetTexture/ 设置为 /null/。
注意,如果要使用作为 /source/(渲染)纹理一部分的深度或模板缓冲区,
您必须手动执行等同于 Blit 功能的操作 - 即使用目标颜色缓冲区和源深度缓冲区调用 Graphics.SetRenderTarget
,设置正交投影 (GL.LoadOrtho),
设置材质通道 (Material.SetPass) 并绘制一个四边形 (GL.Begin)。
请注意,在线性颜色空间中,设置正确的 sRGB<-> 线性颜色转换
状态非常重要。受之前渲染的内容的影响,当前状态可能不是您预期的状态。
您应考虑在执行 Blit 或任何其他手动渲染之前,将 GL.sRGBWrite 设置为
需要的值。
请注意,如果调用 Blit 时将 source
和 dest
设置为相同的 RenderTexture,可能会导致未定义的行为。更好的方法是使用具有双缓冲的自定义渲染纹理,或使用两个 RenderTextures 并在它们之间交替以手动实现双缓冲。
另请参阅:Graphics.BlitMultiTap、Post-processing effects。
using UnityEngine;
public class Example : MonoBehaviour { // Copies aTexture to rTex and displays it in all cameras.
Texture aTexture; RenderTexture rTex;
void Start() { if (!aTexture || !rTex) { Debug.LogError("A texture or a render texture are missing, assign them."); } }
void Update() { Graphics.Blit(aTexture, rTex); } }
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.