先从点下编辑器Play按钮那一刻开始。
流程从Engine的tick出发。
这下我们走到了 FViewport::Draw( boolbShouldPresent/*= true */)方法,实现是在UnrealClicent.cpp里面。
还有一层Draw,是ViewportClicent的Draw,每个FViewport持有一个ViewportClicent,后续可以继续分析其关系。
往下看下去,来到一个比较重点的代码
FSceneViewFamilyContext ViewFamily(FSceneViewFamily::ConstructionValues(
InViewport,MyWorld->Scene,EngineShowFlags) .SetRealtimeUpdate(true));
这里是构建一个场景视图成员,用于渲染用,其实里面更多的是一些数据记录,比较重要的是所持有的FSceneInterface的子类FScene实例,FScene可以理解成UWorld在渲染模块下的映射,也就是渲染模块不直接关心UWorld上的Actor,而是关心FScene上的数据。
再看看FSceneViewFamily和FSceneViewFamilyContext
到目前为止,FSceneViewFamily里面只是包含了一些视口数据,但是实际渲染需要的ViewMatrix和ProjectionMatrix并没有任何求解地方,所以接下来肯定是有地方计