linux osg插件怎么安装

linux osg插件怎么安装,第1张

一、Linux常用安装包及安装方法1、安装包一般有四类:

1)tar包,如software-1.2.3-1.tar.gz。他是使用UNIX系统的打包工具tar打包的。

2)rpm包,如software-1.2.3-1.i386.rpm。他是Redhat Linux提供的一种包封装格式。包的管理工具YUM

3)dpkg包,如software-1.2.3-1.deb。他是Debain Linux提供的一种包封装格式。包的管理工具apt-get

4)bin包,如jdk-1_5_0_05-linux-i586.bin,有些Linux软件不公开源代码,只发布二进制可执行程序,这

类程序一般会以bin来标记。

2、tar一般安装方法

1)取得应用软件:通过下载、购买光盘的方法获得;

2)解压缩文件:一般tar包,都会再做一次压缩,如gzip、bz2等,所以你需要先解压。如果是最常见的gz格

式,则能执行:“tar -xvzf 软件包名”,就能一步完成解压和解包工作。如果不是,则先用解压软件,再执

行“tar -xvf 解压后的tar包”进行解包;

3)阅读附带的INSTALL文件、README文件;

4)执行“./configure”命令为编译做好准备;

5)执行“make”命令进行软件编译;

6)执行“make install”完成安装;

7)执行“make clean”删除安装时产生的临时文件。

一般来说,Linux的应用软件的可执行文件会存放在/usr/local/bin目录下!不过这并不是“放四海皆准”的真理

,最可靠的还是看这个软件的INSTALL和README文件,一般都会有说明。

3、rpm包一般安装方法

只需简单的一句话,就能说完。执行:

rpm -ivh rpm软件包名

rpm参数 参 数 说 明

-i 安装软件

-t 测试安装,不是真的安装

-p 显示安装进度

-f 忽略所有错误

-U 升级安装

-v 检测套件是否正确安装

4、deb包一般安装方法

dpkg -i deb软件包名

如:dpkg -i software-1.2.3-1.deb

5、bin包一般安装方法

1)、打开一个SHELL,即终端

2)、用CD 命令进入源代码压缩包所在的目录

3)、给文件加上可执行属性:chmod +x ******.bin(中间是字母x,小写)

4)、执行命令:./******.bin(realplayer for linux就是这样的安装包),执行安装过程中可以指定安装目录,类似于Windows下安装。

二、如何查找光盘中的rpm包

使用find命令查找光盘中的内容即可。比如要查找mysql相关的rpm包。可以执行如下命令:

find /media -name mysql*.rpm

说明:一般将光盘插入光驱,Linux系统会自动挂载,如上图,我的机器挂载点是/media目录。找到你需要的包名,直接安装即可。

安装好ubuntu14.04之后,下载boost、qt、osg的库,进行编译

1.boost

参考http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html

boost提取出来以后,先./configure,生成b2

这里b2好像就是对应1.40以前的bjam,都是boost自己的编译程序。

再执行./b2 link=static runtime-link=static variant=debug,release

layout=versioned stage --stagedir="/home/username/boost_1_58_0/bin/gcc"

threading=multi

这个命令是个大概的格式,具体可能有些拼写符号有误,主要就多说几点。一个是link和runtime-link,link是在编译期间,是选择

static还是shared,如果是static,那么boost库在编译完成后,会绑入输出的程序,如果是shared,那么需要放在代码目录下,供

引用。runtime-link则是在程序发布之后,如果启动运行,调用boost库的方式,如果选择shared,那么不但需要把编译输出的文件给客

户,还要给他一堆依赖的动态链接库。

variant是以什么方式输出,如果既想要debug 又想要release,那么就用逗号连接。

但是,如果同时输出debug,release,会产生命名冲突,必须指定layout=versioned,这样debug和release出来的库的名字才不会冲突。

stage编译的话,编译完成后,所有的库文件都会被输入指定的stagedir里面,而include文件本身就在boost_1_58_0下面

的boost文件夹中。不需要再执行make

install,install的作用会把所有生成的库拷入/usr/local/lib里面,/boost_1_58_0/boost也会拷入/usr

/local/include 里面,有点多余

但是stage方式编译的话,在每次生成依赖boost库的程序的时候,需要用-I在指定inlucde路径。可以通过在环境变量文件里面指定环境

变量,然后g++编译的时候,指定这个环境变量。关于环境变量参考了这篇:http://blog.csdn.net/tigerjibo

/article/details/8513365

比如我有一个调用boost库的代码文件hboost.c,在/home/username/.profile文件里面指定了

BOOST_ROOT,重启生效。编译的时候 执行 g++ -I$BOOST_ROOT hboost.c -o

hboost,就可以输出编译结果,再运行./hboost就可以看到程序运行的结果了。

2.qt

qt其实比较简单,直接进入解压到目录,./congfigure;make;make install三个步骤就可以了。不过由于我要用osg 利用qt的库编译osgQT所以这里有个坑。

首先,为什么选择QT4.8,这是因为它是QT5.0以下的最新版。为什么不用QT5呢,因为据osgChina里面的大牛说,好像QT5在osg

里面进行多线程方面有bug。具体参考这些帖子,http://bbs.osgchina.org/forum.php?mod=viewthread&

amptid=13908&highlight=qt5

http://bbs.osgchina.org/forum.php?mod=viewthread&tid=12703&highlight=qt5

其次,为了最后能生成osgQT,需要编译QT的GLWidget等相关类,所以需要在本机上安装opengl。开始的时候参考这篇文章

http://www.wikihow.com/Install-Mesa-(OpenGL)-on-Linux-Mint.但运行命令的时候总是告诉我

依赖有问题。于是看到有人说需要更新源(http://forum.ubuntu.org.cn/viewtopic.php?f=48&

t=468366),就又找到了这篇文章http://wiki.ubuntu.org.cn/%E6%BA%90%E5%88%97%E8%A1

%A8#Trusty.2814.04.29.E7.89.88.E6.9C.AC。这下就全都妥了。

然后进入qt解压目录,做./configure -static -debug-and-release -no-sql-sqlite

-no-sql-sqlite2 -no-sql-sqlite_symbian

-opengl生成静态库。注意,那几个no-sql的选项,如果不带的话,会在下一步make的时候,报

qt_plugin_instance_qsqlite

unresolve之类的错误(http://www.qtcentre.org/threads/25304-making-qt-libs-as-

static-problem-under-Linux(ubuntu))。-opengl选项,会让configure自动去默认路径寻找opengl

相关的依赖,如果你的opengl安装的位置不对,他会要求你自己指定其他的位置。

3.osg

osg默认是用cmake来编译的,所以应该先用apt-get把cmake

cmake-gui搞下来。在编译的过程中发现,如果本机的依赖库有问题,有可能会导致编译或者链接失败。一个比较偷懒的办法提供给大家。首先,请先更新

你linux的源,之后apt-get build-dep

openscenegraph,这个命令在我这里下载了几十兆的依赖库。然后进入到osg的解压目录,然后把makefile.txt拖进gui,点击

configure,勾选group、advanced。如果要编译Debug那么先把cmake组里面的参数build

type(似乎是这个选项)写Debug,build组里面的compile

example勾选。然后再点击一次configure,再点generate。理论上依赖库应该是没问题的,因为我们apt-get了那么多依赖库对

吧。

然后终端里make,如果报错,如果报错是和某个依赖库有关的,那么就重新打开cmake-gui,把那个依赖库选项下的include、library全部删掉,再重新生成,然后再重新make。如此反复,最终一定会生成一份可用的osg。

当然也可以不下载依赖库,直接把QT和opengl在默认路径下准备好,如果这样的话其实更简单,直接终端里面运行./configure就行了,

自动会以release方式cmake出makefile,如果想要Debug方式,那就改一下configure文件。然后make,一般不会有问题。

make结束之后,所有生成的文件会位于解压文件夹里的bin、lib、inlcude里,把这些拷贝出来,放到另外一个文件夹比如build,然

后把下载到的data文件夹,里面包括那个牛、滑翔机和卡车等等经典的模型,也放到这个build里面,设置一下环境变量,osg应该就可以用了。

设置有关环境变量的问题,需要设置两个或者三个环境变量。如果在执行完make之后,再执行make

install,那么只需要设置OSG_FILE_PATH指定data文件夹的位置,并在PATH中指定bin文件夹的位置(这样可以运行

osgersion,osgiewer这些编译时附送的应用)。make

install会把include和lib文件夹拷入usr/local下的include、lib文件夹。但是如果没有执行make

install,那么需要设置第三个环境变量,那就是LD_LIBRARY_PATH,我的分发版是ubuntu

14.04,sudo gedit /etc/environment打开配置文件,添加export

LD_LIRARY_PATH=$LD_LIBRARYPATH:path to lib然后在终端里执行source

/etc/environment。这样做是因为在执行osgiewer的时候,如果要读入cow.osg文件,osg需要lib文件夹下的plugIn

文件夹里的插件来读取对应格式的文件。由于我我们没有执行make install所以就需要告诉osg,这个lib文件夹到底在哪里

http://stackoverflow.com/questions/14012021/osgviewer-cow-does-not-view-a-cow

http://forum.openscenegraph.org/viewtopic.php?t=11021

不得不说,我的osg生成的还是有问题,freetype总是用不了,字体显示上有些蛋疼。后来很仔细的把cmake里面的有关freetype的

地址都指定了,也输出osgdb_freetype.so了,但使用的时候还是出现undefined

symbol错误。先不打算搞了,起码现在主要功能都能用,字体的事先放一放。

http://blog.csdn.net/solofly752/article/details/45481137

简介

OpenSceneGraph是一个开放源码,跨平台的图形开发包,它为诸如飞行器仿真,游戏,虚拟现实,科学计算可视化这样的高性能图形应用程序开发而设计。它基于场景图的概念,它提供一个在OpenGL之上的面向对象的框架,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具。

特性

有了OpenSceneGraph,我们的目标是让所有的人在场景图技术中受益,无论是商业还是非商业的用户。它完全是由标准C++程序和OpenGL写的,充分利用STL和设计模式,发挥开源开发模型的优势来提供一个免费的开发库,并且重点集中在用户的需求上。随着使用一个全特性的场景图OpenSceneGraph的关键优势在于它的性能、可扩展性、可移植性和快速开发(productivity),更具体的来说:

性能

支持视图投影剔除(view frustum culling),隐藏面剔除(occlusion culling),小特性剔除(small feature culling),细节层次节点(LOD),状态排序(state sorting),顶点数组,顶点缓冲对象(vertex buffer objects),OpenGL着色语言和显示列表(display lists),以上所列都是场景图内核的一部分。它们共同使OpenSceneGraph成为一个高性能的图形库变为可能,OpenSceneGraph也支持绘制进程(drawing process)的定制,比如场景图的连续细节层次(CLOD)的网格(参见虚拟地形项目和Delta3D)。

快速开发

场景图的内核封装了包括最新扩展的大部分OpenGL功能,提供诸如剔除和排序的渲染优化功能,同样提供能快速开发高性能图形应用程序的一整套补充库。应用程序开发者可以更关心实质性内容和如何 *** 控这些它们,而不再是底层的代码

??? 通过学习已有的场景图,比如:Performer和Open Inventor,把它们同像设计模式这样现代软件工程理念联合起来,加上早期开发周期中的大量反馈信息,设计一个清晰的可扩展的库已经成为可能。用户可以很简单的适应OpenSceneGraph并且把它集成到自己的应用程序中

数据装载

为了读入和写出数据库,有一个数据库的支持库(osgDB)增加了通过后缀名动态插件机制,从而支持大量数据格式,目前的发布版本有55种单独的插件支持3D数据和图像格式的装载。支持的3D数据格式包括COLLADA, LightWave (.lwo),Alias Wavefront (.obj),OpenFlight (.flt), 多线程页面调度支持的TerraPage (.txp),Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb),AutoCAd (.dxf), Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) ,AC3D (.ac) 和自带的.osg ASCII 文本格式。支持的图像格式包括.rgb, .gif,.jpg, .png, .tiff, .pic, .bmp, .dds (包含压缩的一系列Mip贴图影像),.tga and quicktime (在OSX环境下),全范围的高质量、抗锯齿字体也能通过freetype插件支持,基于字体的图像也可以通过.txf插件支持。

用户也可以通过与我们同行的一个项目(VirtualPlanetBuilder)生成大规模地形空间数据(multi GB),使用OpenSceneGraph的自带数据分页调度支持来查看这些数据。

节点工具箱

这个场景图同样有一套节点工具集,它们是可以在你的应用程序中编译或者在运行时装载的独立库,它们增加支持粒子系统(osgParticle),高质量抗锯齿文本(osgText),特效框架结构(osgFX),阴影框架结构(osgShadow),交互控制(osgManipulator),与虚拟仿真相关的效果(osgSim)。

可移植性

场景图的内核已经被设计成尽量少的依赖具体的平台,很少的部分超出了标准C++程序和OpenGL。这就使得这个场景图可以快速移植到大部分系统中—最开始在IRIX开发,然后移植到Linux,接着到Windows,再后来就是FreeBSD, Mac OSX,Solaris,HP-UX, AIX 甚至是PlayStation2!

完全独立与窗口 *** 作系统的场景图内核库使得用户在它上面可以增加他们自己的指定窗口库和应用程序,在发布版本中osgViewer库提供自带窗口支持,可支持Windows (Win32), Unices (X11) 和 OSX (Carbon)。osgViewer库也可以轻松的和你的窗口开发包集成起来,作为OpenSceneGraph-2.0发布版本的一部分,有例子演示了如何在Qt, GLUT, FLTK, SDL, WxWidget, Cocoa and MFC中的使用。场景图内核的可扩展性使得它不仅仅可运行在便携式设备,甚至高端的多核、多GPU的系统和集群上。这可能是因为场景图内核为OpenGL的显示列表和纹理对象支持多重图形渲染环境(multiple graphics contexts),剔除和绘制的遍历过程被设计成隐藏渲染数据为局部变量,这样可以以几乎只读的方式使用场景图内核。这样就允许多对剔除—绘制过程运行在多个CPU上,CUP也是绑定在多个图形子系统之上。对多图形设备渲染环境和多线程的支持可以在osgViewer中方便使用,发布版本中所有的例子都可以以多线程和多GPU的方式运行。作为社区项目,OpenSceneGraph支持多种语言,比如Java,Lua和Python。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6232693.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-18
下一篇2023-03-18

发表评论

登录后才能评论

评论列表(0条)

    保存