風雨送春歸,
飛雪迎春到。
已是懸崖百丈冰,
猶有花枝俏。
俏也不爭春,
只把春來報。
待到山花爛漫時,
她在叢中笑。
這首卜運算元·詠梅可是應了我的心情了。最近換工作,受到頻頻打擊,面試過程中發現滿世界都是搞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,都是一致的體驗,想起來都有點小激動。下面是她的介面,是不是很好很強大?
以下是它的官網:
玩opengl,我們需要新建glut專案:
各種各樣的opengl支援庫,比如glew和他們的標頭檔案,我把它放到這裡了:
大家可以一股腦的把.dll檔案放到windows/system32目錄下,而.lib和.a統統放到codeblock/mingw/lib目錄下,標頭檔案統統放到codeblock/mingw/include/gl目錄下。
帶著夢想高飛!
轉眼來兄弟連已經半個月了,在這半個月裡,我感觸頗多。在來這裡之前,我從來都沒有想過我會如此認真的學習過。當拖這沉重的行李來到學校時,將我在這之前的猶豫統統都趕走了,取而代之的是堅定的信念。每乙個同學的臉上都閃耀著光芒,我從他們的眼中看到了對知識的渴望,以此激發了我學習的慾望。通過了這麼多天的學習,我...
帶著夢想高飛!
轉眼來兄弟連已經半個月了,在這半個月裡,我感觸頗多。在來這裡之前,我從來都沒有想過我會如此認真的學習過。當拖這沉重的行李來到學校時,將我在這之前的猶豫統統都趕走了,取而代之的是堅定的信念。每乙個同學的臉上都閃耀著光芒,我從他們的眼中看到了對知識的渴望,以此激發了我學習的慾望。通過了這麼多天的學習,我...
帶著夢想高飛!
轉眼來兄弟連已經半個月了,在這半個月裡,我感觸頗多。在來這裡之前,我從來都沒有想過我會如此認真的學習過。當拖這沉重的行李來到學校時,將我在這之前的猶豫統統都趕走了,取而代之的是堅定的信念。每乙個同學的臉上都閃耀著光芒,我從他們的眼中看到了對知識的渴望,以此激發了我學習的慾望。通過了這麼多天的學習,我...