1. 程式人生 > 其它 >小菜學Chromium開發系列:OpenGL學習

小菜學Chromium開發系列:OpenGL學習

風雨送春歸,飛雪迎春到。已是懸崖百丈冰,猶有花枝俏。俏也不爭春,  
只把春來報。待到山花爛漫時,她在叢中笑。

這首《毛澤東詩詞》·卜算子·詠梅可是應了我的心情了。最近換工作,受到頻頻打擊,面試過程中發現滿世界都是搞Chromium的,面試官看起來都快90後了,但是後生可畏,Chromium聊起來一套一套的,什麼GPU加速、什麼多程序多執行緒自由切換,把我問倒無數回。無數失敗之後,搞得我連去老羅的錘子公司面試的信心都沒了,失去了做一個有情懷的人的好機會。痛定思痛,下定決心學習Chromium,再不深入學習它,可能完全跟不上時代、會直接被KO出局的。

好了,題外話說完了,言歸正傳。Chromium的東西那麼多,從那裡入手呢?既然GPU加速被google吹得那麼神,我們就從GPU依賴的OpenGL開始吧。什麼是Chromium的GPU加速呢?有什麼好處呢?

GPU加速就是利用顯示卡的超強3D計算能力做層與層的合成,甚至部分繪製。請看下面的Chromium合成架構圖:

上圖左邊是渲染程序,裡面呼叫Skia,再呼叫合成器;最右邊是瀏覽器程序,裡面有視窗;中間紅色框的是GPU程序,裡面是合成器的上下文,把合成的工作委託給GL/D3D模組完成,GL/D3D輸出到視窗HWND

開發者可以將頁面的渲染工作部分交給強大的GPU(電腦上就是顯示卡,嵌入式晶片上就是實現了OpenGL API的圖形影象處理單元)來進行。這其實已經是現代瀏覽器的趨勢,微軟的 IE10 已經支援 GPU 硬體加速,而 Firefox 已經啟用了這個功能的支援。

那麼這個黃色的寫著GL/D3D的東東是個啥?它就是大名鼎鼎的OpenGL以及微軟的DirectX的3D標準,當年還存在著這兩大標準的你死我活的較量呢,以SGI等公司為首的開放標準OpenGL的適用性越來越廣,從PC到工作站、再到嵌入式無處不見其身影。而微軟的DirectX的3D則只能在微軟自己的產品上使用,看來,這個世界還是喜歡開放的標準,扯遠了。

搞Chromium開發,不懂這個OpenGL說不過去,小菜今天就帶著大家一起玩OpenGL。首先準備環境,由於對微軟VS200N的動不動好幾個G的大個頭、以及微軟封裝的內心牴觸,個人比較喜歡開源、個頭不大的開發IDE,開源IDE當然有很多,名氣很大的有Eclipse,名氣小的叫啥我也忘記了。小菜喜歡一個叫CodeBlock的IDE,她符合我的品味--開源、小巧還跨多個作業系統,無論你在Windows還是Linux,都是一致的體驗,想起來都有點小激動。下面是她的介面,是不是很好很強大?

以下是它的官網:http://www.codeblocks.org/

玩OpenGL,我們需要新建GLUT專案:

各種各樣的OpenGL支援庫,比如glew和他們的標頭檔案,我把它放到這裡了:http://d.download.csdn.net/down/2560229/ssagnn23

大家可以一股腦的把.dll檔案放到Windows/system32目錄下,而.lib和.a統統放到codeblock/mingw/lib目錄下,標頭檔案統統放到codeblock/mingw/include/GL目錄下。

下一篇文章我開始玩一個最簡單的多邊形。

轉載請註明http://blog.csdn.net/lichwei1983