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