用于处理稀疏纹理的类。
稀疏纹理是指并非所有纹理数据都能同时驻留在内存中的纹理。它们通常也称为“分块纹理”或“巨型纹理”。
想象一个 16384x16384 的纹理,每个像素 32 位 - 它将占用 1GB 的内存。该纹理被分解成矩形的“块”,每个块可以驻留在内存中,也可以不驻留。您可以根据与摄像机的距离、玩家需要看到的世界的区域等,根据需要加载和卸载这些块。
否则,稀疏纹理的行为与着色器中的任何其他纹理一样 - 它们可以具有 mipmap,可以使用所有纹理过滤模式等。如果您碰巧读取了一个不存在的块,则可能会得到未定义的结果(在许多 GPU 上,结果是黑色,但这并非保证)。
并非所有硬件和平台都支持稀疏纹理,因此您应该在使用它们之前检查 SystemInfo.supportsSparseTextures。例如,在 DirectX 系统上,它们需要 DX11.2(Windows 8.1)和相当新的 GPU;在 OpenGL 上,它们需要 ARB_sparse_texture 扩展支持。稀疏纹理仅支持非压缩纹理格式。
创建稀疏纹理后,使用 tileWidth 和 tileHeight 查询块大小。块大小取决于平台和 GPU。
使用 UpdateTile 或 UpdateTileRaw 使块驻留在内存中并更新其颜色数据。使用 UnloadTile 卸载块。
其他资源:稀疏纹理。
isCreated | 稀疏纹理是否已实际创建?(只读) |
tileHeight | 获取稀疏纹理块高度(只读)。 |
tileWidth | 获取稀疏纹理块宽度(只读)。 |
SparseTexture | 创建一个稀疏纹理。 |
UnloadTile | 卸载稀疏纹理块。 |
UpdateTile | 使用颜色值更新稀疏纹理块。 |
UpdateTileRaw | 使用原始像素值更新稀疏纹理块。 |
allowThreadedTextureCreation | 允许 Unity 内部在任何线程(而不是专用的渲染线程)上执行纹理创建。 |
currentTextureMemory | 场景中所有纹理使用的内存量。 |
desiredTextureMemory | 如果没有任何其他限制,Unity 加载的纹理的总大小(以字节为单位)。在 Unity 加载任何纹理之前,它会应用内存预算,如果纹理大小超过其值,则会降低加载的纹理分辨率。desiredTextureMemory 值考虑了 Unity 已请求或手动设置的 mipmap 级别。例如,如果 Unity 未以全分辨率加载纹理,因为纹理距离较远或其请求的 mipmap 级别大于 0,则 Unity 会减少 desiredTextureMemory 值以匹配所需的总内存。desiredTextureMemory 值可能大于 Texture.targetTextureMemory 值。 |
GenerateAllMips | 可与采用 mip 计数的纹理构造函数一起使用,以指示应生成所有 mip。此字段的值为 -1。 |
nonStreamingTextureCount | 场景中非流式纹理的数量。这包括 Texture2D 和 CubeMap 纹理的实例。这并不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。 |
nonStreamingTextureMemory | Unity 为场景中的非流式纹理分配的内存量。这仅包括 Texture2D 和 CubeMap 纹理的实例。这并不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。 |
streamingMipmapUploadCount | 由于纹理 mipmap 流式传输而上传纹理的次数。 |
streamingRendererCount | 在纹理流式传输系统中注册的渲染器数量。 |
streamingTextureCount | 流式纹理的数量。 |
streamingTextureDiscardUnusedMips | 此属性强制流式纹理系统丢弃所有未使用的 mipmap,而不是在纹理内存预算超出之前缓存它们。当您分析或编写测试以在内存中保持一组可预测的纹理时,这很有用。 |
streamingTextureForceLoadAll | 强制流式纹理加载所有 mipmap 级别。 |
streamingTextureLoadingCount | 当前正在加载 mipmap 的流式纹理的数量。 |
streamingTexturePendingLoadCount | 待加载的流式纹理的 mipmap 数量。 |
targetTextureMemory | Unity 在应用内存预算并完成纹理加载后分配给场景中纹理的纹理内存总量。`targetTextureMemory`还考虑了 mipmap 流式传输设置。此值仅包括 Texture2D 和 CubeMap 纹理的实例。此值不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。 |
totalTextureMemory | 如果 Unity 以 mipmap 级别 0 加载所有纹理,Unity 将使用的纹理内存总量。这是一个理论值,不考虑来自流式传输系统或任何其他输入的任何输入,例如,当您手动设置`Texture2D.requestedMipmapLevel`时。要查看考虑输入的纹理内存值,请使用`desiredTextureMemory`。`totalTextureMemory`仅包括 Texture2D 和 CubeMap 纹理的实例。此值不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。 |
hideFlags | 对象是否应隐藏、与场景一起保存或用户可修改? |
name | 对象的名称。 |
anisoLevel | 定义纹理的各向异性过滤级别。 |
dimension | 纹理的维度(类型)(只读)。 |
filterMode | 纹理的过滤模式。 |
graphicsFormat | 返回纹理对象的 GraphicsFormat 格式或颜色格式。 |
graphicsTexture | 表示上传到图形设备的纹理资源的 GraphicsTexture(只读)。 |
height | 纹理的高度(以像素为单位)(只读)。 |
imageContentsHash | 纹理的哈希值。 |
isDataSRGB | 如果纹理像素数据位于 sRGB 色彩空间中,则返回 true(只读)。 |
isReadable | Unity 是否在 CPU 可寻址内存中存储此纹理像素数据的附加副本。 |
mipMapBias | 纹理的 mipmap 偏差。 |
mipmapCount | 此纹理中有多少个 mipmap 级别(只读)。 |
updateCount | 更新纹理时,此计数器会递增。 |
width | 纹理的宽度(以像素为单位)(只读)。 |
wrapMode | 纹理坐标环绕模式。 |
wrapModeU | 纹理 U 坐标环绕模式。 |
wrapModeV | 纹理 V 坐标环绕模式。 |
wrapModeW | Texture3D 的纹理 W 坐标环绕模式。 |
GetInstanceID | 获取对象的实例 ID。 |
ToString | 返回对象的名称。 |
GetNativeTexturePtr | 检索指向纹理资源的本机(底层图形 API)指针。 |
IncrementUpdateCount | 递增更新计数器。 |
Destroy | 删除 GameObject、组件或资源。 |
DestroyImmediate | 立即销毁对象 obj。强烈建议您使用 Destroy 代替。 |
DontDestroyOnLoad | 加载新场景时,不要销毁目标对象。 |
FindAnyObjectByType | 检索类型为 type 的任何活动加载的对象。 |
FindFirstObjectByType | 检索类型为 type 的第一个活动加载的对象。 |
FindObjectsByType | 检索类型为 type 的所有加载对象的列表。 |
Instantiate | 克隆对象 original 并返回克隆。 |
InstantiateAsync | 捕获原始对象(必须与某些 GameObject 相关)的快照,并返回 AsyncInstantiateOperation。 |
SetGlobalAnisotropicFilteringLimits | 设置各向异性限制。 |
SetStreamingTextureMaterialDebugProperties | 此函数在 mipmap 流式传输系统已知的全部材质上设置 mipmap 流式传输调试属性。 |
bool | 对象是否存在? |
operator != | 比较两个对象是否引用不同的对象。 |
operator == | 比较两个对象引用是否引用同一个对象。 |