終于把咱的編輯器寫到一個段落了。撤銷還原照著ogitor寫好了,不過依然有些部分不完善:我們的GUI庫為了方便就直接選了MFC而非Qt。(還有一個原因是不想全部拿ogitor的)用過Qt的也知道,OOP的GUI編寫是相當(dāng)方便的,可是MFC就不同了,MFC的基于事件響應(yīng)在當(dāng)今顯得太老舊了(我這么以為額),而且c++沒有語言級別上的委托,沒有qt那種信號機(jī)制,所以咱得自己實(shí)現(xiàn)。
今天早上查實(shí)現(xiàn)策略的時候找到一個sinbad(Ogre的創(chuàng)始者)寫的GUI框架,我看了一眼就覺得比ogitor寫的更通用。里面的singal,F(xiàn)unciton都用的是boost庫,該用sharedPtr的地方都用了,注釋齊全,自覺得這就是GUI結(jié)構(gòu)的極限了~~~p話不多說,我就把這個小項(xiàng)目的特性翻譯下吧:
原文地址:
http://www.ogre3d.org/forums/viewtopic.php?f=11&t=41153(代碼需要從SVN下載)
這個框架目前實(shí)現(xiàn)的:
1.嵌入了Ogre渲染的多窗口系統(tǒng)
2. 一個典型的3維建模風(fēng)格的十字分割的四個面板,且能任意最大化其中的一個。
3.攝像機(jī)具有FPS模式和軌道(orbit)觀察模式。
4.松耦合的事件系統(tǒng)將傳遞model部分(MVC的Model)的變化給別的子系統(tǒng)。
我愛這塊。
5.單擊點(diǎn)選和框選系統(tǒng)。
6.泛型屬性系統(tǒng)。
我愛它。。。太帥了。。7.簡單的Model實(shí)現(xiàn)。
引用sinbad最后的話:
nevertheless there's quite a few weeks of effort in this so it's a pretty solid base。
想寫編輯器但沒有經(jīng)驗(yàn)的直接拿這個吧,寫的太棒了~~注意:sinbad用的GUI庫是Wxwidget,自己需要變變的。
這段時間寫編輯器,有種特別強(qiáng)烈的感覺:
我覺得基于GUI的程序是有盡頭的,GUI程序?qū)懙組VC完全了,就基本完美了,而這些思想其實(shí)都是前人做好的車輪,你是自己鉆研也好,看高人源碼也好,最終的終點(diǎn)都在這。(當(dāng)然我承認(rèn)自己鉆研的確收獲更多,畢竟這是思考的優(yōu)勢)我們無法寫的再好了。它不像寫引擎,寫圖形,技術(shù)日新月異。GUI只需要靈活,松耦合,泛型,這就是它的全部。這里也體會到c++的另一個好處,啥都沒有,啥都得自己來,它不會給你c#那樣的語言級委托,但它給你了零件,(STL,Boost)你只要看著制造說明書(高人源碼)自己試著組裝一次即可。