特性

作者: osgChina 發布于2018-10-13 13:04:34 分類 : 關于

面向用戶

OSG是一個開源的三維實時場景圖開發引擎,被廣泛應用在可視化(飛行、船舶、車輛、工藝等仿真)、增強現實以及醫藥、教育、游戲等領域。

平臺支持

OSG可以支持幾乎所有的操作系統平臺,它使用OpenGL ES使得可以支持手持臺、平板以及其它嵌入式設備,使用OpenGL使得其可以在所有的家用電腦以及中型大型機和集群上進行工作。

許可

LGPL,在國內很少有人完全明白各種開源許可是怎么回事,但是大家都在使用開源工程。在中國使用一個引擎就是對該引擎發展的最大貢獻,用戶多就意味著繁榮和對該引擎越來越多的完善(非原文,譯者加)。

技術

OSG采用C++書寫,使用了標準模版庫(STL)。OSG使用場景樹的方式來管理三維場景,使用邏輯組來構建場景樹,以便進行高效的渲染和遍歷等。

OSG使用運行時對各種顯卡擴展的實時檢測,使得OSG支持從OpenGL1.0到OpenGL4.2以及OpenGL ES 1.1 到2.0的所有設備,所以不管設備新舊,操作系統如何,OSG均能及時識別出它支持什么版本的OGL或OES,然后完好的在其上運行。

OSG采用模塊化的設計,降低了OSG內部模塊的耦合性,使得用戶更加容易理解。并且OSG提供了豐富的示例,通過閱讀這些示例可以很好的學習這些模塊(學習例子對于學習OSG是非常重要的---FreeSouth注)。模塊化的設計使得用戶不僅可以只學習和使用自己需要的模塊,也可以根據需要定制自己的模塊。

OSG的關鍵特點可以使用如下關鍵詞進行總結:高性能、可擴展性、接口化等,具體如下:

  • 高性能

支持基于視錐體的裁切、基于遮檔的裁切以及其它的小特性裁切,支持LOD、OpenGL狀態排序、VAO、VBO以及著色語言、顯示列表等所有的圖形學里經常提到的提高效率的招數。它使得OSG成為一個效率高,表現力好的引擎。OSG同樣支持客戶化的LOD,客戶可以自己定制基于分頁的四叉樹場景結構用來實現復雜場景,具體可以看一下VTP和Delta3D以及osgEarth。

  • 生產力

OSG的核心支持所有的OpenGL擴展,哪怕是剛發布的最新擴展,對其進行封裝,優化使得用戶不用關注OpenGL那些底層的代碼和擴展等,就可以快速的搭建基于最新特性的三維應用程序。

除對底層代碼的封裝外,OSG還有著與其它系統類似Performer以及OpenInventor等各種現代高級系統的結合,這些結合的案例可以使得用戶快速的將OSG與自己的系統相結合提供幫助。OSG和現有與三維相關的,尤其是基于OpenGL的系統有著豐富的結合案例,可以看一下業內知名人士array的osgRecipes、osgXI以及osgCookbook從中獲取三維系統與OSG相結合的方案靈感。

  • 數據加載

OSG支持市面上幾乎所有的數據格式,無論是圖片還是三維模型,以及字體等都能很好的讀取。

除了支持單一的格式外,OSG還有VPB、osgEarth以及其它不常用的擴展來支持對海量數據的處理和讀取。

  • 工具類

OSG提供一些工具類用來完成一些相互獨立的功能,列舉如下:

    • osgParticle-粒子系統。(OSG的粒子系統從OSG的1.2版本以來,鮮有改變,八年了,它沒發展,推薦使用Spark粒子系統,其與OSG的結合array的osgXI還是osgRecipes中有示例--FreeSouth注)。

    • osgText-文字處理與顯示。

    • osgFX-特殊效果。

    • osgShadow-陰影。

    • osgManipulator-對模型的局部操作器。

    • osgSim-一些可視化效果。

    • osgTerrain-地形渲染。(針對地形,推薦使用VPB或osgEarth--FreeSouth注)。

    • osgAnimation-動畫。

    • osgVolume-體渲染。

  • 接口化

OSG做到不依賴任何與操作系統有關的中間件,只使用標準C++和OpenGL,早期在IRIX上開發,隨后擴展到Linux、Windows、Mac、AIX以及Andriod和其它中國人不關心也用得少的操作系統。

OSG的接口化保證了其高度獨立,這也使得其除了跨各種平臺以外,還可以支持各種UI,比如MFC、QT、SDL、GLUT、WxWidget、Cocoa等。OSG的示例中有這些UI與OSG相結合的例子。(國內使用最多的是QT和MFC--FreeSouth注)。

  • 可伸縮性

OSG可以運行在多核的CPU和GPU上,這緣于OSG對OpenGL顯示列表和紋理單元以及揀選、繪制遍歷等過程實施了保護措施,使這些階段可以單獨為一個線程也可以在一個線程中串行執行。可以通過osgViewer以及所有的例子來配置當前OSG應用程序的線程模型。

  • 多語言支持

Lua、Python、甚至JAVA都有與OSG的結合。


? 30选5最新开奖结果