渲染纹理是可以渲染到的纹理。
它们可以用于实现基于图像的渲染效果、动态阴影、投影仪、反射或监控摄像头。
渲染纹理的一种典型用法是将其设置为相机的“目标纹理”属性(Camera.targetTexture),这将使相机渲染到纹理中,而不是渲染到屏幕上。
请记住,渲染纹理内容可能会在某些事件中“丢失”,例如加载新关卡、系统进入屏幕保护程序模式、全屏模式进出等等。发生这种情况时,现有的渲染纹理将再次变为“未创建”,您可以使用 IsCreated 函数检查这种情况。
与其他“原生引擎对象”类型一样,重要的是要注意任何渲染纹理的生命周期,并在使用完它们后使用 Release 函数释放它们,因为它们不会像普通托管类型那样被垃圾回收。
渲染纹理只在 GPU 上具有数据表示,您需要使用 Texture2D.ReadPixels 将其内容传输到 CPU 内存。
新创建的渲染纹理的初始内容是未定义的。在某些平台和 API 上,内容将默认设置为黑色,但您不应该依赖于此。您可以使用 LoadStoreActionDebugModeSettings 来突出显示显示屏中未定义的区域,这有助于您在构建的应用程序中调试渲染问题。
其他资源:Camera.targetTexture。
active | 当前活动的渲染纹理。 |
antiAliasing | RenderTexture 的抗锯齿级别。 |
autoGenerateMips | 设置此标志时,将自动生成mipmap 级别。 |
bindTextureMS | 如果为 true 且抗锯齿大于 1,则默认情况下不会解析渲染纹理。如果渲染纹理需要在着色器中绑定为多重采样纹理,请使用此选项。 |
colorBuffer | 渲染纹理的颜色缓冲区(只读)。 |
depth | 渲染纹理深度缓冲区的精度(位数)(支持 0、16、24 和 32)。 |
depthBuffer | 渲染纹理的深度/模板缓冲区(只读)。 |
depthStencilFormat | 深度/模板缓冲区的格式。 |
descriptor | 此结构包含创建 RenderTexture 所需的所有信息。它可以被复制、缓存和重复使用,以轻松创建共享相同属性的 RenderTexture。 |
dimension | 渲染纹理的维数(类型)。 |
enableRandomWrite | 在 Shader Model 5.0 级别的着色器中启用对该渲染纹理的随机访问写入。 |
graphicsFormat | 渲染纹理的颜色格式。您可以将颜色格式设置为 None 以实现仅深度渲染。 |
height | 渲染纹理的高度(以像素为单位)。 |
memorylessMode | 渲染纹理无内存模式属性。 |
sRGB | 该渲染纹理是否使用 sRGB 读/写转换?(只读)。 |
stencilFormat | 您可以封装在 RenderTexture 中的模板数据的格式。指定此属性将为 RenderTexture 创建一个模板元素并设置其格式。这允许将模板数据绑定为 Texture 到支持它的所有平台的所有着色器类型。此属性不指定模板缓冲区的格式,该格式受 RenderTexture.depth 中指定的深度缓冲区格式的约束。目前,大多数平台只支持 R8_UInt(DirectX11、DirectX12),而 PS4 还支持 R8_UNorm。 |
useDynamicScale | 当此标志设置为 true 时,渲染纹理被设置为用于动态分辨率系统。 |
useDynamicScaleExplicit | 当此标志设置为 true 时,渲染纹理被设置为用于动态分辨率系统。缩放通过显式调用 ApplyDynamicScale 应用。 |
useMipMap | 设置此标志时,渲染纹理具有 mipmap。 |
volumeDepth | 3D 渲染纹理的体积范围或数组纹理的切片数。 |
vrUsage | 如果此 RenderTexture 是立体渲染中使用的 VR 眼睛纹理,则此属性决定是否执行任何特殊渲染。 |
width | 渲染纹理的宽度(以像素为单位)。 |
RenderTexture | 创建一个新的 RenderTexture 对象。 |
ApplyDynamicScale | 应用动态分辨率系统缩放。 |
ConvertToEquirect | 将渲染纹理转换为等距格式(立体或单眼等距)。左眼将占据上半部分,右眼将占据下半部分。单眼版本将占据整个纹理。纹理维数必须为 TextureDimension.Cube 类型。 |
Create | 实际创建 RenderTexture。 |
DiscardContents | 提示 GPU 驱动程序 RenderTexture 的内容将不会被使用。 |
GenerateMips | 生成渲染纹理的 mipmap 级别。 |
GetNativeDepthBufferPtr | 检索指向深度缓冲区资源的原生(底层图形 API)指针。 |
IsCreated | 渲染纹理是否实际创建了? |
Release | 释放 RenderTexture。 |
ResolveAntiAliasedSurface | 强制解析抗锯齿渲染纹理。 |
SetGlobalShaderProperty | 将此 RenderTexture 赋值为名为 propertyName 的全局着色器属性。 |
GetTemporary | 分配一个临时渲染纹理。 |
ReleaseTemporary | 释放使用 GetTemporary 分配的临时纹理。 |
SupportsStencil | RenderTexture 是否有模板缓冲区? |
allowThreadedTextureCreation | 允许 Unity 内部在任何线程(而不是专用渲染线程)上执行纹理创建。 |
currentTextureMemory | 场景中所有 Texture 使用的内存量。 |
desiredTextureMemory | Unity 加载的 Texture 的总大小(以字节为单位),如果没有其他约束。在 Unity 加载任何 Texture 之前,它会应用内存预算,如果 Texture 大小超过其值,则会降低加载的 Texture 分辨率。desiredTextureMemory 值会考虑 Unity 请求或手动设置的 mipmap 级别。例如,如果 Unity 由于距离较远或请求的 mipmap 级别大于 0 而不以全分辨率加载 Texture,则 Unity 会降低 desiredTextureMemory 值以匹配所需的总内存。desiredTextureMemory 值可能大于 Texture.targetTextureMemory 值。 |
GenerateAllMips | 可用于接受 mip 计数的 Texture 构造函数,以指示应生成所有 mip。此字段的值为 -1。 |
nonStreamingTextureCount | 场景中非流式 Texture 的数量。这包括 Texture2D 和 CubeMap Texture 的实例。这并不包括任何其他 Texture 类型,也不包括 Unity 在内部创建的 2D 和 CubeMap Texture。 |
nonStreamingTextureMemory | Unity 为场景中的非流式 Texture 分配的内存量。这仅包括 Texture2D 和 CubeMap Texture 的实例。这并不包括任何其他 Texture 类型,也不包括 Unity 在内部创建的 2D 和 CubeMap Texture。 |
streamingMipmapUploadCount | 由于 Texture mipmap 流式传输而上传 Texture 的次数。 |
streamingRendererCount | 在 Texture 流式传输系统中注册的渲染器的数量。 |
streamingTextureCount | 流式 Texture 的数量。 |
streamingTextureDiscardUnusedMips | 此属性强制流式传输 Texture 系统丢弃所有未使用的 mipmap,而不是在超出 Texture 内存预算之前缓存它们。这在您分析或编写测试以保持可预测的 Texture 集在内存中时很有用。 |
streamingTextureForceLoadAll | 强制流式传输 Texture 加载所有 mipmap 级别。 |
streamingTextureLoadingCount | 当前正在加载 mipmap 的流式 Texture 的数量。 |
streamingTexturePendingLoadCount | 待加载的流式 Texture 的 mipmap 数量。 |
targetTextureMemory | Unity 在应用内存预算并完成 Texture 加载后,为场景中的 Texture 分配的 Texture 内存总量。`targetTextureMemory`还会考虑 mipmap 流式传输设置。此值仅包括 Texture2D 和 CubeMap Texture 的实例。此值不包括任何其他 Texture 类型,也不包括 Unity 在内部创建的 2D 和 CubeMap Texture。 |
totalTextureMemory | 如果 Unity 以 mipmap 级别 0 加载所有 Texture,则 Unity 将使用的 Texture 内存总量。这是一个理论值,不会考虑来自流式传输系统或任何其他输入的任何输入,例如,当您手动设置`Texture2D.requestedMipmapLevel` 时。要查看考虑了输入的 Texture 内存值,请使用`desiredTextureMemory`.`totalTextureMemory`仅包括 Texture2D 和 CubeMap Texture 的实例。此值不包括任何其他 Texture 类型,也不包括 Unity 在内部创建的 2D 和 CubeMap Texture。 |
hideFlags | 对象是否应隐藏、与场景一起保存或由用户修改? |
name | 对象的名称。 |
anisoLevel | 定义 Texture 的各向异性过滤级别。 |
dimension | Texture 的维数(类型)(只读)。 |
filterMode | Texture 的过滤模式。 |
graphicsFormat | 返回 Texture 对象的 GraphicsFormat 格式或颜色格式。 |
graphicsTexture | 表示上传到图形设备的纹理资源的 GraphicsTexture(只读)。 |
height | Texture 的高度(以像素为单位)(只读)。 |
imageContentsHash | Texture 的哈希值。 |
isDataSRGB | 如果纹理像素数据位于 sRGB 颜色空间,则返回 true(只读)。 |
isReadable | Unity 是否在 CPU 可寻址内存中存储此纹理的像素数据的额外副本。 |
mipMapBias | Texture 的 mipmap 偏差。 |
mipmapCount | 此 Texture 中有多少个 mipmap 级别(只读)。 |
updateCount | 更新 Texture 时,此计数器将递增。 |
width | Texture 的宽度(以像素为单位)(只读)。 |
wrapMode | 纹理坐标包装模式。 |
wrapModeU | 纹理 U 坐标包装模式。 |
wrapModeV | 纹理 V 坐标包装模式。 |
wrapModeW | Texture3D 的纹理 W 坐标包装模式。 |
GetInstanceID | 获取对象的实例 ID。 |
ToString | 返回对象的名称。 |
GetNativeTexturePtr | 检索指向 Texture 资源的原生(底层图形 API)指针。 |
IncrementUpdateCount | 递增更新计数器。 |
Destroy | 删除 GameObject、组件或资源。 |
DestroyImmediate | 立即销毁对象 obj。强烈建议您使用 Destroy 代替。 |
DontDestroyOnLoad | 加载新场景时不要销毁目标对象。 |
FindAnyObjectByType | 检索任何已加载的类型为 type 的活动对象。 |
FindFirstObjectByType | 检索第一个已加载的类型为 type 的活动对象。 |
FindObjectsByType | 检索所有已加载的类型为 type 的对象列表。 |
Instantiate | 克隆原始对象并返回克隆。 |
InstantiateAsync | 捕获原始对象(必须与某个 GameObject 相关)的快照并返回 AsyncInstantiateOperation。 |
SetGlobalAnisotropicFilteringLimits | 设置各向异性限制。 |
SetStreamingTextureMaterialDebugProperties | 此函数在 mipmap 流式传输系统已知的材质上设置 mipmap 流式传输调试属性。 |
bool | 对象是否存在? |
operator != | 比较两个对象是否引用不同的对象。 |
operator == | 比较两个对象引用,查看它们是否引用同一个对象。 |