Unity-紋理數(shù)組
紋理數(shù)組是具有相同大小/格式/標記的 2D 紋理的集合,這些紋理對于 GPU 而言像是單個對象,并可在著色器中使用紋理元素索引進行采樣。它們可以用于實現(xiàn)自定義地形渲染系統(tǒng)或其他特殊效果,讓您高效訪問大量相同大小和格式的紋理。2D 紋理數(shù)組的元素也稱為切片或圖層。
平臺支持
紋理數(shù)組需要受到底層圖形 API 和 GPU 的支持。紋理數(shù)組在以下平臺上可用:
Direct3D 11/12(Windows、Xbox One)
OpenGL Core(Mac OS X、Linux)
Metal(iOS、Mac OS X)
OpenGL ES 3.0(Android、iOS、WebGL 2.0)
PlayStation 4
其他平臺(OpenGL ES 2.0 或 WebGL 1.0)不支持紋理數(shù)組。可使用?SystemInfo.supports2DArrayTextures?在運行時確定紋理數(shù)組支持情況。
創(chuàng)建和填充紋理數(shù)組
由于紋理數(shù)組沒有紋理導入管線,必須在腳本中創(chuàng)建紋理數(shù)組??墒褂?Texture2DArray?類來創(chuàng)建和填充紋理數(shù)組。請注意,紋理數(shù)組可序列化為資源,因此可以借助 Editor 腳本中的數(shù)據(jù)創(chuàng)建和填充紋理數(shù)組。
通常,紋理數(shù)組完全是在 GPU 內(nèi)存中使用,但您可以使用?Graphics.CopyTexture、Texture2DArray.GetPixels?和?Texture2DArray.SetPixels?與系統(tǒng)內(nèi)存之間雙向傳輸像素。
將紋理數(shù)組用作渲染目標
紋理數(shù)組元素也可用作渲染目標。使用?RenderTexture.dimension?提前指定渲染目標是否是 2D 紋理數(shù)組。Graphics.SetRenderTarget?的?depthSlice?參數(shù)可指定要渲染到的 Mipmap 級別或立方體貼圖面。在支持“分層渲染”(例如,幾何著色器)的平臺上,可將?depthSlice?參數(shù)設置為 –1 以便將整個紋理數(shù)組設置為渲染目標。此外還可使用幾何著色器來渲染到個別元素中。
在著色器中使用紋理數(shù)組
請參閱在著色器中使用紋理數(shù)組。