谷歌angle庫使用心得

經過谷歌的angle庫能夠在項目中,調用opengl接口渲染時,選擇調用directx或者webgl來渲染,避免機器沒有安裝opengl驅動啓動異常的問題。git

這個庫的使用能夠不修改原有使用opengl的功能上,使用directx繪製。github

如下是我在接入該庫時遇到的一系類問題和心得:web

angle庫能夠在谷歌git上下載:windows

https://chromium.googlesource.com/angle/angleapi

針對windows 平臺,微軟也從谷歌原生angle上做出小修改:函數

https://github.com/Microsoft/angle工具

 

若是使用windows開發,建議使用微軟的angle項目。性能

 

遇到的一些坑:測試

1.在繪製線條的時候,調用glDrawArray(GL_LINE, 0, 2)接口繪製線條時,directx渲染底層調用DrawPrimitive接口繪製,但該接口不知道控制線條的粗細、實虛線,須要本身在修改Renderer9.cpp(本人使用d3d9來渲染)的drawImpletment函數,webgl

使用ID3DXLine接口繪製線條。

 

2.性能問題,因爲angle庫調用opengl或者directx時,須要轉換各自渲染接口所需的頂點格式或者着色器等等,轉換過程須要消耗必定的cpu運算能力,若是在一幀須要同時大量繪製操做,建議不適用該庫。若是在內存容許的狀況下,(本人在一幀中測試,繪製九千條線,fps會從30幀降低到10多幀,出現明顯卡頓)。

能夠打包繪製的頂點數據,一次性繪製完成,消耗更多的內存,換取性能。

 

3.關於xp系統下的使用問題,官方指出只能經過vs 2015及最新版本編譯,而且使用windows sdk10以上編譯,很顯然該庫不支持xp系統下運行,並且xp系統也不支持directx 11的繪製。我後面改用vs 2015編譯, 平臺工具集選擇 「Visual Studio 2013 - Windows XP (v120_xp)」,刪除directx11 的api,不使用系統自帶的direct庫和頭文件, 改用directx sdk的庫和頭文件,

刪除不兼容xp的api,最後編譯成庫在xp系統下運行,實現過程至關繁瑣,工做量也多,而且後續bug維護難以修復,畢竟不是官方開發人員。

 

最後總結一下angle的優缺點:

優勢:跨平臺切換渲染方式,不擔憂設備使用環境或缺失驅動問題。

缺點:性能通常,不適用大量繪製,不兼容老系統xp,directx 不兼容控制線條粗細。

 

轉載請註明出處, from 博客園HemJohn

相關文章
相關標籤/搜索