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