OSG开发笔记(一):OSG介绍、编译
???????OSG開發專欄(點擊傳送門)
上一篇:無
下一篇:《OSG開發筆記(二):OSG幫助文檔編譯》
前言
?????? 需要用到三維立體變換、三維球體等三維開發,之前準備使用opengl,但是opengl較為底層,綜合考量選型osg。
OSG概述
簡介
? ? ? ?OpenSceneGraph(簡稱OSG)使用OpenGL技術開發,是一套基于C++平臺的應用程序接口(API),它讓程序員能夠更加快速、便捷地創建高性能、跨平臺的交互式圖形程序。它作為中間件(middleware)為應用軟件提供了各種高級渲染特性,IO,以及空間結構組織函數;而更低層次的OpenGL 硬件抽象層(HAL)實現了底層硬件顯示的驅動。
優勢
? ? ? ??OpenGL技術為圖形元素(多邊形、線、點……)和狀態(光照、材質、陰影……)的編程提供了標準化的接口。而OSG開發的主要意義在于,將3D場景定義為空間中一系列連續的對象,以進行三維世界的管理。正是由于場景及其參數定義的特點,通過狀態轉化、繪圖管道和自定制等操作,OSG還可以用于優化渲染性能。
? ? ? ? 從系統開發人員的角度看,相比工業標準OpenGL 或其它的圖形庫,OSG的優點顯而易見。除了開源和平臺無關性以外,它封裝并提供了數量眾多的提升程序運行時性能的算法、針對包括分頁數據庫在內的幾乎所有主流數據格式的直接數據接口、以及對腳本語言系統Python 和Tcl 的支持,特別的,支持腳本語言系統的意義不僅限于用戶可以使用除C++語言以外的工具進行圖形系統的開發,事實上,對弱類型計算機語言的支持將突破現有交互式圖形系統在人-機交互性能方面的最終限制。
? ? ? ? OSG采用以下思想和工具進行構建:
- ANSI標準C++;
- C++標準模板庫(STL);
- 設計模式(Design patterns)。
? ? ? ??這些工具使得OSG的開發者可以在自己喜好的平臺上進行開發,并且依據用戶所要求的平臺進行配置。
? ? ? ? OSG支持骨骼動畫、關鍵幀動畫等各種流行的動畫,它可以把3DMAX建立的動畫模型轉化成OSG格式導入到項目中進行控制,osgAnimation庫中有大量的動畫實用類。在OSG相關擴展中,最引人注目的是osgEarth、VPB與osgOcean,它們可以幫助開發人員完成一個功能強大且完善的三維地形展示系統,osgEarth功能類似于GoogleEarth,且地形的實時生成效率可媲美GoogleEarth。osgOcean是OSG的擴展海洋模塊,特點是可以逼真地仿真大面積水域,也可以在此基礎上做二次開發??蓪崿F的效果如下圖:
? ? ? ??
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
硬件需求
? ? ? ? 如今的OSG 已經可以在多種硬件平臺和操作系統上運行,并且能夠在大部分計算機系統上正常使用。
? ? ? ? 處理器:OSG 可以在大部分的CPU 上編譯通過。OSG 具備線程安全性,并且可以有效利用多處理器和雙核結構的特性。OSG 可以在32 位或者64 位處理器上運行通過。
? ? ? ? 圖形:你的計算機系統需要配置一塊AGP 或者PCI 總線的圖形顯示卡。OSG可以在大部分用于建模,仿真和游戲的專業級或大眾級圖形設備上運行。可以運行OSG 的圖形設備必須高效地支持OpenGL,因此你應當從設備商處獲得最新的OpenGL 設備驅動程序。OSG 對顯卡RAM 的需求因用戶的使用而異,但是256MB 應當足夠了。OSG 可以在多管(multi-pipe)顯示系統上運行,并且可以利用多顯卡來提升渲染速度。
? ? ? ? RAM:最小的系統RAM 內存需求是由顯示數據的數量和類型決定的。推薦配置為1GB,大型數據集的開發可能需要更多的內存支持。
? ? ? ? 磁盤:和RAM 一樣,磁盤空間的需求大小由數據量決定。對于任何程序來說,更高速和更大容量的磁盤無疑可以減少數據讀取的時間。
軟件需求
? ? ? ? 可以運行OSG的平臺需要具備OpenGL的支持能力,以及C++的編譯環境,支持OSG的系統包括Solaris,IRIX,Windows,Mac OSX,HP-UX,Sony Platystation等等,不過XBox除外。 和OpenGL類似,OSG的核心并沒有提供窗口系統的功能,但是其擴展功能里包含osgviewer可以很好地支持各種顯示和操控。當然用戶也可以自由選擇所需的圖形開發接口,如GLUT,X11/Motif,Win32,MacOS X,Qt,wxWindows,Fox等。?
? ? ? ? 筆者主要是Qt項目。
OSG編譯
下載
? ? ? ? 當最新版本為:3.6.3,編譯的話存一些奇怪的問題,估計是代碼變化了,但是3.4.0就沒有這些問題,所以下載3.4.0版本。
?????? osg官網:Home
?????? 3.6.3 csdn下載:OpenSceneGraph-OpenSceneGraph-3.6.3.rar-C++代碼類資源-CSDN下載
?????? 3.4.0 csdn下載:OpenSceneGraph-OpenSceneGraph-3.4.0.rar-C++代碼類資源-CSDN下載
使用cmake配置目標工程
? ? ? ??
補充:附加qt5.9.3的mingw32版本
步驟一:修改源碼CMakeList
set(DESIRED_QT_VERSION "5" CACHE STRING "") set(CMAKE_PREFIX_PATH "C:\Qt\Qt5.9.3\5.9.3\mingw53_32" CACHE PATH "")? ? ? ??
步驟二:填入Qt5Widget頭文件,configure會找到其他
? ? ? ??
補充(2019年7月16日補充):添加字體插件freetype
? ? ? ? 添加freetype插件,不添加該插件會在給場景中添加文字無法顯示,如下圖:
? ? ? ? ?
步驟一:下載freetType2
?????? 官網地址:FreeType Downloads
步驟二:單獨編譯freeType2
??????
步驟三:使用命令行編譯
??????
? ? ? ??
步驟四:修改OSG編譯的freetype配置
? ? ? ??
? ? ? ??
? ? ? ??
使用qt命名行編譯
??????
? ? ? ?
? ? ? ?多跑幾次make,最后不帶-j的狀態make一次,因為有些庫前后依賴問題。
? ? ??
??????
編譯好的osg庫下載(不帶qt,不包括osgQt)
? ? ? ? csdn:osg3.4.0-win-mingw32-Lib.rar-QT其他資源-CSDN下載
編譯好的osg庫下載(帶qt,包括osgQt)
? ? ? ? csdn:osg3.4.0.rar-QT其他資源-CSDN下載
參考資料
? ? ? ??OSG學習記錄一_wangyezidong的專欄-CSDN博客
上一篇:無
下一篇:《OSG開發筆記(二):OSG幫助文檔編譯》
原博主博客地址:長沙紅胖子Qt C++ Linux Arm_長沙紅胖子_CSDN博客-Qt開發,圖形圖像處理,OpenCV圖像處理領域博主
原博主博客導航:紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中..._長沙紅胖子Qt C++ Linux Arm-CSDN博客_qt 紅胖子
本文章博客地址:OSG開發筆記(一):OSG介紹、編譯_長沙紅胖子Qt C++ Linux Arm-CSDN博客_osg
總結
以上是生活随笔為你收集整理的OSG开发笔记(一):OSG介绍、编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vod硬件服务器,点播视频 (VOD)
- 下一篇: 【Code Pratice】—— 递增三