小白请教osg(OpenSceneGraph)如何安装

小白请教osg(OpenSceneGraph)如何安装,第1张

一下载资料:

1、下载源码:

在http://www.openscenegraph.org/projects/osg/wiki/Downloads下载稳定版本的源代码或预编译包。

source code为源代码,可以用CMAKE工具生成.sln的解决方案;

binaries为预编译包,预编译包不是openscenegraph官方直接维护,而是有其他爱好者上传,可能会有隐患,最好是从源代码进行编译。

版本说明:<主版本号>.<副版本号>.<修订号>

主版本号高的,功能丰富;副版本号为偶数的为正式版本,比较稳定;副版本号为奇数的为开发者版本,有新特性和功能,但会存在未解决的兼容性和效率问题;开发者版本和正式版本是同步发行的。

下载文件为:OpenSceneGraph-2.8.0.zip

2、下载Cmake工具:

在http://www.cmake.org/cmake/resources/software.html中下载CMake工具cmake-2.8.2-win32-x86.exe。

3、下载SVN软件(用于下载源码或第三方库,有的版本不需要此软件,可直接下,根据情况定):

在http://tortoisesvn.tigris.org/下载TortoiseSVN。

4、下载第三方库Dependencies,http://www.openscenegraph.org/projects/osg/wiki/Downloads/Dependencies,

“VisualStudio 8 (2005) SP1 - svn access directory ”

5、下载示例:

在http://www.openscenegraph.org/projects/osg/wiki/Downloads/SampleDatasets中下载示例数据文件OpenSceneGraph-Data-2.8.0.zip 。

二、安装

1、安装cmake工具

2、在某盘符下建立osg文件夹,在该文件夹中放置源码文件、第三方文件和示例文件。

3、运行cmake,

第一行(where is the source code)输入osg文件夹中的源码文件;

第二行(where to build the binaries)输入一个新文件夹名及地址,如osg/build_osg;

点configure,选择所用的编译器版本,即c++版本;

点grouped,选择build项,选择build_osg_examples和build_osg_wrappers

选择cmake项,设置cmake_install_prefix的位置(用于存放编译完的各种模块文件,如库文件、可执行文件和头文件)

点configure,点advanced,选上build_mfc_example

点configure,

点generate,完成。

此时在osg/build_osg文件中生成了对应编译版本的.sln文件。

4、用c++编译器打开该.sln文件,在解决方案管理器窗口中的all_build上右击,选“生成”,将在osg/build_osg中生成几个G的文件。

在install上右击,选“生成”,将在第三步中cmake_install_prefix设置的文件夹中生成编译完的各种模块文件(如库文件、可执行文件和头文件)。

三、设置环境变量

我的电脑-属性-高级-环境变量

系统变量

OPENSCENEGRAPH_VERSION=2.8.0

OSGDIR=D:\Program Files\OpenSceneGraph

PATH新增:%OSGDIR%\bin

%OSGDIR%\bin\osgPlugins-%OPENSCENEGRAPH_VERSION%

OSG_FILE_PATH=%OSGDIR%\data

OSG_NOTIFY_LEVEL=INFO

四、简单测试

在控制台下输入osgviewerd cow.osg

五、建立工程环境

1、使VS支持无扩展名头文件的高亮显示。

进入visual studio,选择Tools-Options,选text editor-file extension,在下面的map extensionless files to选项选择microsoft visual c++。

2、构建基于OSG开发的工程。

1)建一个工程

2)在project-properties中选择configuration properties-c/c++,在additional include directories中输入“$(OSGDIR)\include”。

3)选择configuration properties-linker,在additional library directories中输入“$(OSGDIR)\lib”。

4)选择configuration properties-linker-input,打开additional dependencies窗口,准备配置输入的依赖库文件名称。如OpenThreadsd.libosgd.libosgDBd.libosgUtild.libosgGAd.libosgTextd.libosgViewerd.lib

注意:Debug版本的工程和Release版本的工程所依赖的OSG库文件类型相同,但名称有区别.Debug版本的文件名末尾有"d"标识。根据用户需要的不同,还可以添加其他库依赖文件,这些文件在osg的lib文件夹中。

OK,现在可以编代码,编译、调试,输出效果了,体会OSG渲染引擎的强大吧

安装好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

你检查下以下三条:

1、使用#include <osgDB/ReadFile>了吗?

2、确定你的path环境变量里面包含C:\OSG\OpenSceneGraph\build\bin路径

3、工程属性的附加依赖项中有osgDBd.lib

尝试一下。


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

原文地址:https://54852.com/tougao/11239735.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存