Version: 2023.2

TerrainData.CopyActiveRenderTextureToTexture

切换到手册
public void CopyActiveRenderTextureToTexture (string textureName, int textureIndex, RectInt sourceRect, Vector2Int dest, bool allowDelayedCPUSync);

参数

textureName 要复制到其中的地形纹理的名称。
textureIndex 要复制到其中的地形纹理的索引。
sourceRect 要复制的活动渲染纹理部分。
dest 要复制到其中的地形纹理的 X 和 Y 坐标。
allowDelayedCPUSync 指定是否允许纹理的延迟 CPU 同步。

描述

将活动 RenderTexture 的指定部分复制到地形纹理。

如果 allowDelayedCPUSync 参数设置为 /true/,并且平台支持在 RenderTextureTexture2D 之间进行复制,则 Unity 会执行从活动 RenderTexture 到地形纹理的 GPU 复制。这足以用于地形渲染,但是需要在之后调用 SyncTexture 以同步纹理的 CPU 部分。

如果 allowDelayedCPUSync 参数设置为 /false/,或平台不支持在纹理之间进行复制,则 Unity 会立即回读活动 RenderTexture 的内容,并更新地形纹理的 CPU 和 GPU 部分。

Unity recommends you create the source Render Texture to copy in the format that Terrain.heightmapRenderTextureFormat specifies, and call the HLSL function PackHeightmap before you write to the source render texture. To use PackHeightmap, make sure you have the include directive #include "UnityCG.cginc" in your shader.

另请参阅:DirtyTextureRegionSyncTexture