記的上次看過(guò)UniRx里的源代碼,說(shuō)是參考微軟的響應(yīng)式編程框架,響應(yīng)式編程里的一些理論不細(xì)說(shuō),只單說(shuō)UniRx里的事件流里的事件壓入與執(zhí)行,與UE4的渲染線程設(shè)計(jì)有很多相同之處,如果有了解響應(yīng)式編程相關(guān)源碼如UniRx,應(yīng)該對(duì)UE4的渲染線程流程容易理解。

  在這先說(shuō)下UniRx相應(yīng)事件流的處理,讓不了解的同學(xué)大致有點(diǎn)印象,如當(dāng)前線程計(jì)劃,一般首先有個(gè)隊(duì)列,在相應(yīng)事件響應(yīng)后,把相應(yīng)處理方法填充到隊(duì)列中,另一邊則在隊(duì)列里,根據(jù)先進(jìn)先出的原則,不斷執(zhí)行隊(duì)列里的方法。說(shuō)起來(lái)比較簡(jiǎn)單,主要是這里只拿出UniRx里的一個(gè)執(zhí)行計(jì)劃的事件流來(lái)說(shuō),另外的相關(guān)響應(yīng)式編程概念與本文無(wú)關(guān),也就不提起來(lái)說(shuō)。

  回到正題,說(shuō)了UE4渲染流程的設(shè)計(jì)與上面很多相同,如此,我們先簡(jiǎn)單來(lái)說(shuō)明下相關(guān)UE4里的類,與上面說(shuō)的來(lái)對(duì)應(yīng)。

  FBaseGraphTask: 上面說(shuō)到事件流,那么這個(gè)類在這,就是事件流里的每個(gè)事件。

  TGraphTask: FBaseGraphTask的一個(gè)子類模版類,模版類要求有方法DoTask.(注意這里,后面要說(shuō)。相應(yīng)在此處簡(jiǎn)單理解成C#里的泛型約束,雖然C#直接做不到這點(diǎn),可以簡(jiǎn)接使用泛型約束加接口實(shí)現(xiàn))

  FTaskThreadBase: 簡(jiǎn)單來(lái)說(shuō),這個(gè)類里放的是事件流,以及相應(yīng)處理事件流的一些方法,如

    EnqueueFromThisThread: 壓入事件流中。

    ProcessTasksUntilQuit: 循環(huán)執(zhí)行事件流里方法,直到有要求結(jié)束信號(hào)。

網(wǎng)友評(píng)論