版本: Unity 6 (6000.0)
语言英语
  • C#

Graphics.SetRenderTarget

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每项更改建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void SetRenderTarget(RenderTexture rt, int mipLevel = 0, CubemapFace face = CubemapFace.Unknown, int depthSlice = 0);

声明

public static void SetRenderTarget(Rendering.GraphicsTexture rt, int mipLevel = 0, CubemapFace face = CubemapFace.Unknown, int depthSlice = 0);

声明

public static void SetRenderTarget(RenderBuffer[] colorBuffers, RenderBuffer depthBuffer);

声明

public static void SetRenderTarget(RenderBuffer colorBuffer, RenderBuffer depthBuffer, int mipLevel = 0, CubemapFace face = CubemapFace.Unknown, int depthSlice = 0);

声明

public static void SetRenderTarget(RenderTargetSetup setup);

参数

rt 设置为活动渲染目标的RenderTextureGraphicsTexture
mipLevel 要渲染到的mipmap级别(如果未进行mipmap,则使用0)。
face 要渲染到的立方体贴图面(如果未进行立方体贴图,则使用Unknown)。
depthSlice 要渲染到的深度切片(如果未进行3D或2DArray渲染目标,则使用0)。
colorBuffer 要渲染到的颜色缓冲区。
depthBuffer 要渲染到的深度缓冲区。
colorBuffers 要渲染到的颜色缓冲区(用于多渲染目标效果)。
setup 完整的渲染目标设置信息。

描述

设置当前渲染目标。

此函数设置将要渲染到的RenderTextureGraphicsTextureRenderBuffer组合。在实现自定义渲染算法时使用它,在该算法中需要手动将某些内容渲染到渲染目标纹理中。

具有 mipLevel 和 face 参数的变体支持将渲染到纹理的特定mipmap级别,或立方体贴图 RenderTexture/GraphicsTexture 的特定立方体贴图面。具有 depthSlice 的变体支持将渲染到 3D 或 2DArray 渲染纹理的特定切片。

使用 colorBuffers 数组的函数调用支持使用多渲染目标 (MRT) 的技术,其中片段着色器可以输出多个最终颜色。

调用 SetRenderTarget 仅使用 RenderTexture 或 GraphicsTexture 参数与设置RenderTexture.activeGraphicsTexture.active 属性相同。要将 GraphicsTexture 设置为渲染目标,它必须在 GraphicsTexture.descriptor.flags 中启用 GraphicsTextureDescFlags.RenderTarget。

请注意,在线性颜色空间中,设置正确的 sRGB<->线性颜色转换状态非常重要。根据之前渲染的内容,当前状态可能并非您期望的状态。您应该考虑在进行 SetRenderTarget 或任何其他手动渲染之前,根据需要设置GL.sRGBWrite

其他资源:RenderTextureGraphicsTextureGraphics.activeColorBufferGraphics.activeDepthBufferSystemInfo.supportedRenderTargetCount