轉(zhuǎn)載必須注明原文轉(zhuǎn)自C++博客(cppblog),作者畢達(dá)哥拉斯半圓,謝謝合作。寫這個(gè)文章的目的,是希望得到更多人的幫助、指導(dǎo)、提供建議,甚至合作。我想自己開發(fā)一個(gè)Windows上的C++GUI,我取名叫做WarmGUI,因?yàn)镃oolGUI.com已經(jīng)被人注冊(cè)了,我想那我就叫Warm吧 ^_^
我會(huì)用MFC開發(fā)簡(jiǎn)單的Windows應(yīng)用,我的興趣在服務(wù)器端并且喜歡稍微系統(tǒng)底層一些的工作,做了較長(zhǎng)時(shí)間之后。現(xiàn)在的工作需要我開發(fā)一個(gè)客戶端應(yīng)用,但是現(xiàn)在,我發(fā)現(xiàn)桌面世界變了,我總結(jié)了一些主要原因,不一定正確,而且,這也不是我的重點(diǎn),只是闡述我的目的和動(dòng)因,請(qǐng)批評(píng)指正。
1. Apple公司的個(gè)人產(chǎn)品更加注重個(gè)性化合視感(look & fell),盡管不是新話題,在GoF的設(shè)計(jì)模式中,已經(jīng)論述過MVC以及l(fā)ook & fell,那么在GoF之前這個(gè)話題必然已經(jīng)存在一段時(shí)間了。但是喬布斯幫主在這個(gè)方向做到了極致,各種i產(chǎn)品不斷沖擊桌面,移動(dòng),掌上各種終端,導(dǎo)致所有的廠商不得不跟上Apple公司的腳步。
2. 為了獲得"漂亮"的視覺效果,iOS, Android, linux等產(chǎn)品以O(shè)penGL為主要渲染工具做界面開發(fā),而微軟公司與之抗衡的工具是DirectX,并且在近些年的發(fā)展中DirectX大有超過OpenGL的勢(shì)頭,至少在某些宣傳中是這樣。當(dāng)然這兩技術(shù)必然將長(zhǎng)期共存很長(zhǎng)時(shí)間。
3. 微軟為了跟上時(shí)代潮流,從Win7開始,系統(tǒng)內(nèi)置DirectX11客戶運(yùn)行庫,用戶無需單獨(dú)安裝。而WPF開始取代MFC做為主流的桌面產(chǎn)品,WPF的子集Silverlight也作為網(wǎng)頁前端開發(fā)工具,在IE9中提供特殊視覺效果。
至此,我認(rèn)為開發(fā)UI應(yīng)用的人必須:
1. 學(xué)習(xí)和掌握DirectX/OpenGL至少兩者之一
2. 學(xué)習(xí)和掌握WPF以及Net4以上
但是對(duì)我個(gè)人而言,我學(xué)習(xí)WPF但是拒絕使用WPF,原因如下:
1. WPF是一個(gè)新的框架,只要是框架就會(huì)被限制在里面,mfc那冰冷呆板的樣子就是一個(gè)例子(這也給Apple可乘之機(jī))。wpf不過是用新的冰冷呆板的框架取代了舊的冰冷呆板的框架。
2. 據(jù)說WPF的效率不佳,并且WPF的視覺效果,是對(duì)Direct3D, Direct2D等的封裝,如果想玩的好,還是得從DX玩學(xué)起。
3. 我非常厭惡 C# + .Net 組合,拒絕使用任何C#和.Net,我喜歡效率,喜歡赤裸裸的虐待系統(tǒng),不喜歡隔著衣服玩女人。我強(qiáng)烈的要求使用C++/C做開發(fā),我不知道是否有人跟我一樣,還是這只是我的個(gè)人偏好。
綜合以上原因,我下載了
CEGUI,
MyGUI, 這兩個(gè)C++UI框架的主要應(yīng)用時(shí)游戲,當(dāng)然了,OpenGL/DirectX神馬的最早就是應(yīng)用在游戲上的,他們已經(jīng)做的比較完善,比較強(qiáng)大了。但是我運(yùn)行了他們的Demo之后,卻對(duì)效率界面效果不是很滿意而且有錯(cuò)誤,看來需要讀他們的源代碼,并且修改。
既然如此,我想我可以開發(fā)一個(gè)自己的框架,反正我要學(xué)習(xí)的東西那么多(Dx,OGL, WPF, CEGUI, MyGUI...),邊學(xué)邊干唄。既然要學(xué)習(xí),就學(xué)的高興一點(diǎn),玩得嗨一點(diǎn)。
目前我的設(shè)想如下:
1. 作為通用的界面基礎(chǔ),在此之上構(gòu)建商業(yè)軟件,游戲等等;
2. 輕量級(jí)的類庫,不像MFC那樣對(duì)一切進(jìn)行封裝,允許大量使用Windowd API,只做必要的封裝;
3. 保持靈活度和擴(kuò)展性;
4. 采用Direct2D, Direct3D做渲染;
5. 后期做一個(gè)可視化的IDE,嵌入VisualStudio中,做窗口布局,自動(dòng)生成代碼等。
看來我要做的工作還真不少,下一節(jié),我開始把我做的一些工作總結(jié)寫出來,還要請(qǐng)大家不吝賜教啊!學(xué)生這里先謝過啦~
珍愛生命,努力編程!!