Version: 6000.3
语言: 中文
异步加载纹理和网格数据
检查网格是否使用异步上传管道

纹理和网格加载

Unity 可以加载纹理和meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
数据,并以两种不同的方式将其上传到 GPU:同步或异步。这两个过程称为同步上传管道和异步上传管道。

当 Unity 使用同步上传管道时,它在加载和上传数据时无法执行其他任务。这可能会导致应用程序出现明显的暂停。当 Unity 使用异步上传管道时,它可以在后台加载和上传数据时执行其他任务。

如果纹理或网格符合异步上传管道的条件,Unity 会自动使用异步上传管道。如果纹理或网格不符合异步上传管道的条件,Unity 会自动使用同步上传管道。

运作方式

同步上传管道和异步上传管道之间的主要区别在于 Unity 在构建时保存数据的位置,这会影响 Unity 在运行时加载数据的方式。

在同步上传管道中,Unity 必须在单个帧中加载纹理或网格的元数据(标头数据)和纹素或顶点数据(二进制数据)。在异步上传管道中,Unity 必须仅在单个帧中加载标头数据,并且可以在后续帧中将二进制数据流式传输到 GPU。

在同步上传管道中:

  • 在构建时,Unity 会将网格或纹理的标头和二进制数据写入同一个 .res 文件。
  • 在运行时,当应用程序需要纹理或网格时,Unity 会将该纹理或网格的标头数据和二进制数据从 .res 文件加载到内存中。当所有数据都在内存中时,Unity 会将二进制数据从内存上传到 GPU。加载和上传作主要发生在主线程上,在单个帧中。

在异步上传管道中:

  • 在构建时,Unity 将头数据写入 .res 文件,将二进制数据写入单独的 .resS 文件。
  • 在运行时,当应用程序需要纹理或网格时,Unity 会将 .res 文件中的标头加载到内存中。当标头位于内存中时,Unity 会使用固定大小的环形缓冲区将二进制数据从 .resS 文件流式传输到 GPU。Unity 在多个帧的过程中使用多个线程流式传输二进制数据。请注意,在 Unity 已经知道 GPU 硬件的某些控制台平台上,Unity 会跳过环形缓冲区并直接加载到 GPU 内存中。

其他资源

异步加载纹理和网格数据
检查网格是否使用异步上传管道