Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public NativeArray GetPixelData(int mipLevel);

Параметры

mipLevel MIP-уровень для ссылки.

Возвращает

NativeArray Просмотр буфера данных системной памяти текстур.

Описание

Получает необработанные данные из текстуры для чтения или записи.

Эта функция возвращает прямое «представление» данных пикселей текстуры в виде массива Unity.Collections.NativeArray.

Часть данных будет возвращена в соответствии с запрошенным уровнем MIP. Например, для текстуры размером 16x16x16 в формате RGBA32 получение уровня mip=1 (размер 8x8x8) приведет к массиву размером 2048 байт или массиву из 512 элементов, если Color32 используется как тип.

Обратите внимание, что не все платформы поддерживают сжатые данные 3D-текстур, поэтому, если вы используете сжатые форматы, обратитесь к SystemInfo.supportsCompressed3DTextures.

Вы можете читать и записывать в возвращаемый массив. Если вы пишете в него, вы должны вызвать метод Apply, чтобы загрузить текстуру в GPU. Если массив, возвращенный GetPixelData, использовался для заполнения мип-карты не нулевого уровня, то перед вызовом метода Apply для updateMipmaps необходимо установить значение false.

GetPixelData не выделяет память; возвращенный NativeArray напрямую указывает на буфер данных системной памяти Texture.

Рекомендуется немедленно использовать или изменить данные, полученные этим методом, и не сохранять возвращенный массив для последующего использования, так как возвращенный массив может стать недействительным (т. е. он больше не указывает на допустимую память), если Текстура изменена или обновлено после того, как вы вызвали этот метод.

GetPixelData выдает исключение в случае сбоя.

Смотрите так же: Apply, SetPixels, SetPixels32, SetPixelData, SystemInfo.supportsCompressed3DTextures.

using UnityEngine; public class ExampleScript : MonoBehaviour { public void Start() { var m_Texture3D = new Texture3D(16, 16, 16, TextureFormat.RGBA32, true); var mip0Data = m_Texture3D.GetPixelData<Color32>(1); // pixels in mip = 1 are filled with white color for (int i = 0; i < mip0Data.Length; i++) { mip0Data[i] = new Color32(255, 255, 255, 255); } m_Texture3D.Apply(false); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3