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

Cubemap.GetPixels

建议变更

成功!

感谢帮助我们提高 Unity 文档的质量。尽管我们无法接受所有投稿,但我们确实会阅读用户建议的每项变更,并酌情更新。

关闭

提交失败

由于某些原因,无法提交您建议的变更。请在几分钟后<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public Color[] GetPixels(CubemapFace face, int miplevel);

声明

public Color[] GetPixels(CubemapFace face);

参数

face 要读取的 CubemapFace
miplevel 要获取的 MIP 贴图级别。范围是从 0 到纹理的 Texture.mipmapCount。默认原为 0

返回值

Color[] 包含像素颜色的数组。

描述

获取一个面的 MIP 贴图级别的像素颜色数据,以 Color 结构的形式获取。

该方法从 CPU 内存中获取纹理像素数据。 Texture.isReadable 必须为 true

该数组按行包含像素,从面纹理的左下角开始。数组的大小为 MIP 贴图级别的宽度 × 高度。

每个像素都是 Color 结构。 GetPixels 可能比其他一些纹理方法慢,因为它会将纹理使用的格式转换为 ColorGetPixels 还需要解压缩压缩纹理,并使用内存存储解压缩区域。若要更快地获取像素数据,请改用 GetPixelData

通常,对 GetPixels 的一次调用比对 GetPixel 的多次调用快,尤其是对于大型纹理。

如果 GetPixels 失败,Unity 将抛出异常。如果数组中包含太多数据,则 GetPixels 可能会失败。对于非常大的纹理,使用 GetPixelData

不能对使用 Crunch 纹理压缩的纹理使用 GetPixel

using UnityEngine;

public class CubemapExample : MonoBehaviour { public Cubemap source; public Cubemap destination;

void Start() { // Get a copy of the color data from the source Cubemap, in high-precision float format. // Each element in the array represents the color data for an individual pixel. CubemapFace sourceFace = CubemapFace.PositiveX; int sourceMipLevel = 0; Color[] pixels = source.GetPixels(sourceFace, sourceMipLevel);

// If required, manipulate the pixels before applying them to the destination texture. // This example code reverses the array, which rotates the image 180 degrees. System.Array.Reverse(pixels, 0, pixels.Length);

// Set the pixels of the destination Cubemap. CubemapFace destinationFace = CubemapFace.PositiveX; int destinationMipLevel = 0; destination.SetPixels(pixels, destinationFace, destinationMipLevel);

// Apply changes to the destination Cubemap, which uploads its data to the GPU. destination.Apply(); } }

其他资源:SetPixelsGetPixelDatamipmapCount