Объявление
public Color[] GetPixels(int miplevel = 0);Параметры
miplevel | MIP-уровень, с которого считываются пиксельные данные. По умолчанию используется 0 . |
Возвращает
Color[] Массив, содержащий копию запрошенных цветов пикселей.
Описание
Получает копию данных о цвете пикселя для заданного уровня MIP. Цвета представлены структурами Color.
Один вызов этой функции обычно быстрее, чем несколько вызовов GetPixel, особенно для больших текстур. Если допустимо представление с более низкой точностью, GetPixels32 работает быстрее и использует меньше памяти, поскольку не выполняет преобразования целых чисел в числа с плавающей запятой. Для прямого просмотра данных пикселей используйте GetPixelData. Если вам не нужно какое-либо декодирование или преобразование формата, самый быстрый способ получить доступ к пикселям — GetRawTextureData.
Для успешного выполнения этой функции Texture.isReadable должно быть true
, а данные не должны быть сжаты Crunch. GetPixels32 поддерживает текстуры, сжатые Crunch.
Возвращенный массив представляет собой сглаженный двумерный массив, в котором данные отображаются построчно: пиксели располагаются слева направо и снизу вверх. Размеры массива составляют width * height
мип-уровня. Если эта функция не работает, Unity выдает исключение.
using UnityEngine;
public class Texture2DExample : MonoBehaviour
{
public Texture2D source;
public Texture2D destination;
void Start()
{
// Получить копию данных о цвете из источника Texture2D в высокоточном формате с плавающей запятой.
// Каждый элемент массива представляет данные о цвете отдельного пикселя.
int sourceMipLevel = 0;
Color[] pixels = source.GetPixels(sourceMipLevel);
// При необходимости обработайте пиксели перед их применением к месту назначения Texture2D.
// Этот пример кода переворачивает массив, который поворачивает изображение на 180 градусов.
System.Array.Reverse(pixels, 0, pixels.Length);
// Set the pixels of the destination Texture2D.
int destinationMipLevel = 0;
destination.SetPixels(pixels, destinationMipLevel);
// Apply changes to the destination Texture2D, which uploads its data to the GPU.
destination.Apply();
}
}
Смотрите так же: SetPixels, mipmapCount, GetPixelData, GetPixels32.
Объявление
public Color[] GetPixels(int x, int y, int blockWidth, int blockHeight, int miplevel = 0);Параметры
x | Позиция x массива пикселей для выборки. |
y | Позиция y массива пикселей для извлечения. |
blockWidth | Длина ширины извлекаемого массива пикселей. |
blockHeight | Длина высоты массива пикселей для извлечения. |
miplevel | MIP-уровень, с которого считываются пиксельные данные. По умолчанию используется 0 . |
Возвращает
Color[] Массив, содержащий копию запрошенных цветов пикселей.
Описание
Получает копию данных о цвете пикселя для заданной области заданного уровня MIP. Цвета представлены структурами Color.
Эта функция является расширенной версией GetPixels
. Он не возвращает данные для всех пикселей, а только область blockWidth
по blockHeight
, начиная с x,y.
Блок ограничен размером мип-уровня. Размер возвращаемого массива: blockWidth*blockHeight.
// Получаем прямоугольную область текстуры и помещаем ее в
// новая текстура размером с прямоугольник.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
// Исходная текстура и прямоугольная область, которую мы хотим извлечь.
public Texture2D sourceTex;
public Rect sourceRect;
void Start()
{
int x = Mathf.FloorToInt(sourceRect.x);
int y = Mathf.FloorToInt(sourceRect.y);
int width = Mathf.FloorToInt(sourceRect.width);
int height = Mathf.FloorToInt(sourceRect.height);
Color[] pix = sourceTex.GetPixels(x, y, width, height);
Texture2D destTex = new Texture2D(width, height);
destTex.SetPixels(pix);
destTex.Apply();
// Установите текстуру текущего объекта, чтобы показать
// извлеченный прямоугольник.
GetComponent<Renderer>().material.mainTexture = destTex;
}
}