Объявление
public void Apply(bool updateMipmaps = true, bool makeNoLongerReadable = false);Параметры
updateMipmaps | Если установлено значение true, уровни MIP-карт пересчитываются. |
makeNoLongerReadable | Если установлено значение true, после этой операции Unity отбрасывает копию данных пикселей в адресуемой ЦП памяти. |
Описание
Фактически применить все предыдущие изменения SetPixel и SetPixels.
Если updateMipmaps
имеет значение true
, уровни мипмапов также пересчитываются, используя базовый уровень в качестве источника. Обычно вы хотите использовать true
во всех случаях, за исключением случаев, когда вы сами изменили мип-уровни с помощью SetPixels. По умолчанию для параметра updateMipmaps
установлено значение true
.
Если makeNoLongerReadable
имеет значение true
, Unity освободит память, используемую для хранения адресуемой ЦП копии данных пикселей после загружая его в GPU. isReadable становится false
. По умолчанию makeNoLongerReadable
имеет значение false
.
Применить — потенциально дорогостоящая операция, поэтому вам нужно изменить как можно больше пикселей между вызовами Apply
.
В качестве альтернативы, если вам не нужен доступ к пикселям на ЦП, вы можете использовать Graphics.CopyTexture для быстрого копирования данных текстуры на стороне графического процессора. Обратите внимание, что вызов Apply
может отменить результаты предыдущих вызовов Graphics.CopyTexture.
Текстура должна иметь флаг Читается в настройках импорта.
// Создаем новую текстуру и назначаем ее материалу рендерера
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void Start()
{
Texture2D texture = new Texture2D(128, 128);
GetComponent<Renderer>().material.mainTexture = texture;
for (int y = 0; y < texture.height; y++)
{
for (int x = 0; x < texture.width; x++)
{
Color color = ((x & y) != 0 ? Color.white : Color.gray);
texture.SetPixel(x, y, color);
}
}
texture.Apply();
}
}
Смотрите так же: SetPixel, SetPixels functions, Graphics.CopyTexture.