首页 > 其他分享 >Unreal Engine 大象无形学习笔记(第二部分:虚幻引擎浅析)

Unreal Engine 大象无形学习笔记(第二部分:虚幻引擎浅析)

时间:2023-05-16 13:34:22浏览次数:33  
标签:Engine 渲染 创建 大象无形 Unreal 线程 模块 浅析 加载

 Q1. 虚幻引擎的Main函数在哪?

LaunchWindows.cpp 中找到 WinMain。

Q2. 虚幻引擎为什么要引入模块机制?

编辑器模式、发布模式要单独配置非常麻烦。

工具:Unreal Build Tool

包含大模块:Runtime、Development、Editor、Plugin

每个模块包含:Public、Private文件夹,.build.cs文件

作用域:只有XXXX_API宏暴露的类和成员才能被其他模块访问

Q3. 如何创建自定义模块?

1. 创建模块文件夹结构; 2. 创建模块构建文件.build.cs; 3. 创建模块头文件与实现文件; 4. 创建模块预编译头文件PrivatePCH.h; 5. 创建模块的C++声明和定义。 详细步骤见书P82 Q4.模块的加载顺序? 1)Platform File Module  读取文件 2)FEngineLoop::PreInit->LoadCoreModules  加载核心模块 3)加载 CoreUObject 4)FEngineLoop::LoadPreInitModules 5)加载 Engine 6)加载 Renderer 7)加载 AnimGraphRuntime  8)加载平台相关模块(D3D、OpenGL、StartupCoreModules、Core、Networking、UMG、MessageLog) 9)启用的插件对应模块        10)TaskGraph、ProfilerService  Q5. UE大概有哪些模块?
Documentation WorkspaceMenuStructure MainFrame GammaUI OutputLog
SourceControl TextureCompressor MeshUtilities MovieSceneTools ModuleUI
Toolbox ClassViewer ContentBrowser AssetTools GraphEditor
KismetCompiler Kismet Persona LevelEditor MainFrame
PropertyEditor EditorStyle PackagesDialog AssetRegistry DetailCustomizations
ComponentVisualizers Layers AutomationWindow AutomationController DeviceManager
ProfilerClient SessionFrontend ProjectLauncher SettingsEditor EditorSettingsViewer
ProjectSettingsViewer Blutility OnlineBlueprintSupport XmlParser UserFeedback
GameplayTagsEditor UndoHistory   DeviceProfileEditor SourceCodeAccess BehaviorTreeEditor
HardwareTargetin LocalizationDashboard ReferenceViewer TreeMap SizeMap
MergeActors        
                  Q6. 什么是UBT和UHT?
Unreal Build Tool

跨平台工具

职能:

  1.收集阶段:收集环境变量、源代码目录、引擎目录、工程目录

  2.参数解析阶段:解析命令行参数

  3.实际生成阶段:生成makefile      4. 监视是否需要热加载  
Unreal Header Tool

 编译头文件后,把UPROPERTY和UFUNCTION标记的信息获取过程记录在.generated.cpp里

加载信息:在.generated.cpp里声明宏:IMPLEMENT_CLASS(声明了静态全局变量,实现了当前类函数),利用静态全局变量初始化先于Main函数,选择先加载哪些信息

 Q7. 引擎初始化过程? 1)PreInit   ① 根据CmdLine传入参数设置路径   ② 设置GLog输出设备   ③ 将当前线程设置为主线程并初 始化   ④ 初始化随机数系统   ⑤ 初始化TaskGraph任务系统,根据当前平台核心数设置工作线程数,启动线程池   ⑥ 判断启动模式(Game/Server)   ⑦ LoadCoreModules->CoreUObject   ⑧ 启动引擎模块、渲染模块、动画蓝图、Slate渲染模块、Slate核心模块、贴图压缩模块、地形模块   ⑨ 调用 AppInit 2)Init   IProjectManager -> PostEngineInit 3)主循环   ① 更新控制台变量   ② 请求渲染线程更新当前帧率文字   ③ 更新 App::DeltaTime   ④ 更新内存分配器状态   ⑤ 请求渲染线程刷新底层绘制资源   ⑥ 等待Slate输入捕获完成   ⑦ 调用 Gengine -> Tick   ⑧ if(IsPlayingVedio) WaitVedioEnd   ⑨ 更新 SlateApplication   ⑩ 更新RHI   11 收集下一帧要清理的UObject对象  Q8. 怎么创建和使用线程?   1. 继承 FRunnable   2. 重载 Init、Run、Exit函数   3. 启动线程:FRunnableThread::Create(); Q9. 渲染线程怎么工作的? 启动:StartRenderingThread 全局函数   1. 创建渲染线程实例   2. FRunnableThread::Create创建渲染线程   3. 等待渲染线程准备好,从TaskGraph取出任务并执行(主要执行内容:RenderingThreadMain)   4. 注册渲染线程   5. 创建渲染线程心跳,更新线程 渲染线程 ==渲染命令=> RHI命令列表 ==取出并发送指令=> GPU Q10. 虚幻渲染架构? 延迟渲染:场景中所有不透明物体 前向渲染:透明物体 渲染顺序:延迟光照(不透明物体) --> 深度排序(半透明物体)

标签:Engine,渲染,创建,大象无形,Unreal,线程,模块,浅析,加载
From: https://www.cnblogs.com/tomatokely/p/17244038.html

相关文章

  • hasura graphql-engine 支持mysql&oracle了
    hasuragraphql-engine这几年的变化很大,目前已经支持了不少数据库了,已经不单单是pg了,就在最近hasura对于mysql&oracle的支持已经处于beta阶段了说明hasuragraphql-engine对于其他数据库支持的玩法还是直接学习的(通过dataconnector解决)参考资料https://hasura.io/blog......
  • Vue入门浅析
    title:vue入门浅析author:Sun-Winddate:May14,2022写这篇博文的目的在于为初学vue的同学对vue有一些更进一步的了解读这篇博文前,您应该至少安装了vue环境,能在本地运行一个简单的demo本文将浅析vue项目工程的结构,以及用npm运行项目的过程中发生的一些事件注明:该文本应在......
  • Unreal Engine 大象无形学习笔记 (第一部分:虚幻C++编程)
    Q1.什么时候继承自UObject类,什么时候声明纯C++类?UObject自带功能:1.垃圾收集:继承自UObject并被标记为UProperty的变量,会被引擎自动进行生命周期管理。2.Referenceupdating引用自动更新3.反射4.序列化:纯C++类也可以手动实现5.Automaticupdatingofdefaultproperty......
  • 浅析荫度求解的一些方法
    荫度(arboricity)的定义给定一个无向连通图,可能有重边,请用尽量少的森林覆盖整个边集。\(\tilde{O}(m^2)\)做法网络流做法PebbleGameAlgorithmshttps://www.emis.de/journals/DMTCS/pdfpapers/dmAE0136.pdf没懂,不管。......
  • 2023 开源之夏来啦!报名 MegEngine 项目,赢取万元奖金!
    “开源软件供应链点亮计划-暑期2023”是一项面向高校学生的暑期活动,为高校学生提供了绝佳的、友好开放的交流平台。使学生可以真正投身于开源软件的开发维护,得到资深开源软件开发者指导的机会,获得丰硕的活动奖金,并帮助学生获取优秀企业的关注。活动流程同学们在6月4日之前在......
  • 浅析AI视频智能识别技术如何助力智慧平安校园建设
    校园安全一直是学生健康成长、全面发展的前提与保障。校园门口伤害事件的频发与校园内应急事件的突发,让建设平安校园的任务愈加急迫。校园人流量大、监控点多,安保人员无法同时盯住上百个视频画面,亦无法保证24小时有效监控。传统的校园安防消耗大量人力,事故处置效率非常低,安全预警......
  • ArcEngine出图|相关代码
    ①数据源修复IMapDocumentmapDoc=newMapDocumentClass();mapDoc.Open(mxdPath);IDataSourceHelperMapDocumenthelpler=newDataSourceHelperClass();helpler.FindAndReplaceWorkspaceNamePath(mapDoc,oldpath,mdbPath,true);//oldpath为打开的mxd模板中加载的层的......
  • TSBS 是什么?为什么时序数据库 TDengine 会选择它作为性能对比测试平台?
    去年8月我们在TDengine开发者大会上正式发布了TDengine3.0,TDengine也由此升级成为了一款云原生时序数据库(TimeSeriesDatabase,TSDB)。为了客观、准确、有效地评估TDengine3.0的性能指标,我们决定使用TSBS(TimeSeriesBenchmarkSuite)作为基准性能测试平台,针对DevOps......
  • 浅析危险区域闯入报警系统助力工地安全生产与智能化监管
    一、行业背景施工现场人员管理难度大、临时员工多,目前在工地第一线作业的工人中,农民工约占50%-70%,有的工地高达95%,没有受过专业的培训,对危险隐患意识不强,实时监控难实现。管理人员不可能7*24小时盯着监控屏幕,在安全监管中很容易出现疲惫、注意力集中等情况。建筑现场监控不能实时......
  • MSBuild是 Microsoft Build Engine
    MSBuild是MicrosoftBuildEngine的缩写,代表Microsoft和VisualStudio的新的生成平台。MSBuild在如何处理和生成软件方面是完全透明的,使开发人员能够在未安装VisualStudio的生成实验室环境中组织和生成产品。MSBuild引入了一种新的基于XML的项目文件格式,这种格式容......