在比較了多種多線程引擎框架后,我最終的設(shè)計(jì)類似double-buffer方案,把引擎模塊劃分為3個(gè)線程:Io線程,邏輯線程,渲染線程,對(duì)于我的引擎的目標(biāo)平臺(tái)來(lái)說(shuō),已經(jīng)足夠,實(shí)際上,我針對(duì)的是2-3核的CPU,再多的線程一方面會(huì)使得處理邏輯更加復(fù)雜,另一方面也不會(huì)帶來(lái)效率的提升(甚至?xí)档停琣nyway,我已經(jīng)這么做了,把渲染單獨(dú)做為一個(gè)線程,邏輯線程每幀向渲染線程提交渲染數(shù)據(jù)上下文,在幀開始前進(jìn)行一次同步(等待渲染線程完成上一幀的渲染),原理很簡(jiǎn)單,但真正做起來(lái)還是有不少細(xì)節(jié)需要仔細(xì)考慮的。??偟膩?lái)說(shuō)還是比較順利,這要?dú)w功于寫代碼前做了足夠多的設(shè)計(jì)工作,我甚至為此通讀了Nebula3引擎的代碼,整理了一份PPT并在公司內(nèi)部講解過。
下一步工作該是把整個(gè)Graphics的高層框架搭好了