TerrainData.CopyActiveRenderTextureToTexture
Declaration
public void CopyActiveRenderTextureToTexture(string textureName, int textureIndex, RectInt sourceRect, Vector2Int dest, bool allowDelayedCPUSync);Параметры
| Параметр | Описание |
|---|---|
| textureName | Имя текстуры местности, в которую будет копироваться текстура. |
| textureIndex | Индекс текстуры местности, в которую будет копироваться. |
| sourceRect | Часть активной текстуры отображения, которую нужно скопировать. |
| рука | Координаты X и Y текстуры местности, в которую будет копироваться текстура. |
| allowDelayedCPUSync | Указывает, разрешать ли задержку CPU синхронизации текстуры. |
Описание
Копирует указанную часть активной текстуры RenderTexture в текстуру Территория.
Если allowDelayedCPUSync параметр установлен на true, и платформа поддерживает копирование между RenderTexture и a Texture2D, Unity выполняет GPU копия из активного RenderTexture для текстуры Terrain. Этого достаточно для рендеринга Terrain, но вам нужно будет вызвать SyncTexture затем для синхронизации CPU часть текстуры.
Если allowDelayedCPUSync параметр установлен на false, или платформа не поддерживает копирование текстур, Unity немедленно считывает содержимое активного RenderTexture, и обновляет как CPU и GPU части текстуры Территория.
Unity рекомендует создать исходную текстуру для копирования в формате, который Terrain.heightmapRenderTextureFormat указывает, и вызывает HLSL функция PackHeightmap перед записью текстуры рендеринга в исходный файл. PackHeightmap, убедитесь, что у вас есть директива включения #include "UnityCG.cginc" в вашей тени.
Дополнительные ресурсы: DirtyTextureRegion, SyncTexture.