UE5 在启动流程中的 PreInit 5

简介: 前文已经捋完了 AppInit 函数,接下来接着 62% 的进度继续推进

PreInitPreStartupScreen

  1. 如果 cmdline 中没有 NoLogThread 的参数,则拉起 log 线程

  2. GIOThreadPool 创建并分配 IO 线程池

  3. GSystemSettings 初始化

  4. 设置 ini 文件中配置的渲染设置

  5. UGameUserSettings 预加载分辨率设置

  6. Scalability 初始化质量配置系统

  7. UDeviceProfileManager 初始化激活的设备

  8. Scalability 加载质量配置

  9. GUseThreadedRendering 根据设定决定是否设置 渲染线程为 true

  10. FConfigCacheIni 从ini 文件加载 控制台变量缓存

  11. FPlatformMisc 平台初始化

  12. FPlatformApplicationMisc 平台 APP 初始化

  13. FPlatformMemory 平台内存初始化

  14. DerivedData.IoStore 派生数据异步调用器初始化

  15. ExtraDevelopmentMemoryMB 获取开发环境下需要的额外内存预留大小

  16. CSV_METADATA 宏向性能分析系统添加元数据

  17. FIoDispatcher Io调度器的后期初始化,前面有一个 Initialize(),这里是 InitializePostSettings()

  18. GLogConsole 设置 logconsole 的配置文件

  19. PreInitContext.SlowTaskPtr 创建预初始化上下文的 SlowTask指针

  20. SlowTask 获取 SlowTaskPtr 指针

  21. FPlatformMisc 检查命令行参数的正确性,如果有问题则直接调用 FPlatformMisc::RequestExit 退出

  22. 非Editor 模式下 再次检查了运行模式是否是 命令行模式

  23. 如果标准输出设备没有初始化则在这里进行初始化

  24. 如果是资源烘焙模式,则检查是否有错误,有错误直接退出

  25. IPlatformFeaturesModule 拉起 Platform 需要的相关 Feature

  26. IniGamePhys() 初始化游戏物理引擎

  27. 清理 Shader工作目录

  28. GIsDemoMode 从命令获取是否是 Demo 模式

  29. 初始化引擎的语言本地化

  30. FPIEPreviewDeviceModule 设置预览设备的 高分辨率 HightDPI

  31. UStringTable 本地化字符串表系统初始化

  32. FAudioThread 设置 音频线程

  33. FTextLocalizationManager 显示 splash 前确保引擎本地化加载完成

  34. FSlateApplication SlateUI框架初始化

  35. FInternationalization 编辑器模式下加载所有的本地化数据

  36. FPackageLocalizationManager 初始化本地包管理器

  37. FShaderParametersMetadataRegistration 着色器参数元数据提交

  38. FShaderTypeRegistration 着色器类型注册提交

  39. FShaderParametersMetadata 初始化所有 UniformBufferStruct

  40. 初始化 HMD 设备

  41. RHI 初始化

  42. PipelineStateCache 初始化

  43. 渲染工具初始化

  44. FShaderCodeLibrary 初始化着色器运行时核心库

  45. Virtualization 虚拟化技术的相关初始化

  46. FDistanceFieldAsyncQueue 距离场异步任务队列 初始化

  47. FCardRepresentationAsyncQueue 分块异步任务队列初始化

  48. FShaderCompilingManager 实例化着色器编译对象

  49. 绑定渲染模式到主线程

  50. FShaderCompileUtilities 生成 BRDF 代码头部

  51. 初始化 着色器类型

总结

目前捋到了 92% ,这里的代码都比较简单易懂
罗列新遇到的类

  • GIOThreadPool 全局 IO 线程池
  • GSystemSettings 全局系统设置
  • UGameUserSettings 游戏用户设置
  • Scalability 系统品级设置系统
  • FConfigCacheIni 配置缓存ini文件
  • FPlatformApplicationMisc 平台应用工具
  • FPlatformMemory 平台内存
  • DerivedData 派生数据
  • CSV_METADATA 宏向性能分析系统添加元数据
  • FIoDispatcher IO 调度器
  • IPlatformFeaturesModule 平台特性模块
  • FPIEPreviewDeviceModule 预览设备模块
  • UStringTable 本地化字符串表系统初始化
  • FAudioThread 音频线程
  • FTextLocalizationManager 本地化管理器
  • FSlateApplication 基于Slate UI框架的应用
  • FInternationalization 本地化数据相关,时间,货币等
  • FPackageLocalizationManager 本地化包管理器
  • FShaderParametersMetadataRegistration 着色器参数元数据注册
  • FShaderTypeRegistration 着色器类型注册
  • FShaderParametersMetadata 初始化所有 UniformBufferStruct
  • PipelineStateCache 管线状态缓存
  • FShaderCodeLibrary 着色器核心库
  • Virtualization 虚拟化技术相关
  • FDistanceFieldAsyncQueue 距离场异步任务队列
  • FCardRepresentationAsyncQueue 分块异步任务队列
  • FShaderCompilingManager 着色器编译管理器
  • FShaderCompileUtilities 着色器编译相关工具
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容