纹理数组是具有相同大小/格式/标记的 2D 纹理的集合,这些纹理对于 GPU 而言像是单个对象,并可在着色器中使用纹理元素索引进行采样。它们可以用于实现自定义地形渲染系统或其他特殊效果,让您高效访问大量相同大小和格式的纹理。2D 纹理数组的元素也称为切片或图层。
纹理数组需要受到底层图形 API 和 GPU 的支持。纹理数组在以下平台上可用:
其他平台(OpenGL ES 2.0 或 WebGL 1.0)不支持纹理数组。可使用 SystemInfo.supports2DArrayTextures 在运行时确定纹理数组支持情况。
You can import texture arrays from source texture files that are divided into cells. These are called flipbook textures. To do this:
For more information, see Texture import settings.
To create a texture array from a C# script, use the Texture2DArray class to initialize the texture and set pixel data, and save the object as an asset file using AssetDatabase.CreateAsset.
通常,纹理数组完全是在 GPU 内存中使用,但您可以使用 Graphics.CopyTexture、Texture2DArray.GetPixels 和 Texture2DArray.SetPixels 与系统内存之间双向传输像素。
纹理数组元素也可用作渲染目标。使用 RenderTexture.dimension 提前指定渲染目标是否是 2D 纹理数组。Graphics.SetRenderTarget 的 depthSlice 参数可指定要渲染到的 Mipmap 级别或立方体贴图面。在支持“分层渲染”(例如,几何着色器)的平台上,可将 depthSlice 参数设置为 –1 以便将整个纹理数组设置为渲染目标。此外还可使用几何着色器来渲染到个别元素中。
请参阅在着色器中使用纹理数组。