Windows下编译 OpenSceneGraph

转自:http://mochou123456.blog.163.com:80/blog

vs8下编译osg(OpenSceneGraph)

Osg开发环境的配置全过程(带可执行例子)

Windows下编译 OpenSceneGraph-2.6.0 的方法,主要实现从源代码逐步编译出一个可调试的运行环境.

一、需要的软件包

1、OpenSceneGraph-2.6.0.zip 下载地址
http://www.openscenegraph.org/downloads/stable_releases/OpenSceneGraph-2.6/OpenSceneGraph-2.6.0.zip

也可以直接安装一个.exe软件程序包,然后在安装的目录下找到对应的源文件,一般源文件的路径可以在通过“开始à所有程序àopenScencGraph2.6.0à源文件à属性”找到,本人就是这样用这个源文件。

2、3rdParty_Win32binaries_2005_05_10.zip 下载地址

http://www.openscenegraph.org/downloads/dependencies/3rdParty_Win32binaries_2005_05_10.zip

3、cmake-2.4.7-win32-x86.exe 下载地址

http://www.tntdown.cn/download.asp?id=19650&dp=1

4、msvcr71d.dll 下载地址

http://www.zhaodll.net/dll/download.asp?softid=463&downid=2&id=461

5、msvcp71d.dll 下载地址
http://www.zhaodll.net/dll/download.asp?softid=458&downid=2&id=456

二、生成工程dll

1、在C:/Program Files/OsgChina/OpenSceneGraph/scr(这是安装的默认路径,也可以自己下载源文件)下将OpenSceneGraph-2.6.0.zip解压

2、解压3rdParty_Win32binaries_2005_05 _10.zip

3、将3rdParty_Win32binaries_2005_05 _10.zip解压出来的文件夹放在OpenSceneGraph-2.6.0.zip解压出来的文件夹(OpenSceneGraph2.6.0)下面,OpenSceneGraph2.6.0下面创建一个名为 build的文件夹,以存放下面配置生成的工程文件。

4、在C盘创建文件名为OSG的文件夹,将将以上处理所得到的OpenSceneGraph2.6.0放在copy过来。

5、安装 cmake-2.4.7-win32-x86.exe ,一切都是缺省.

6、通过 开始-->程序-->CMake2.4-->CMake 运行CMake程序.

7、将C:/OSG/OpenSceneGraph/CMakeLists.txt拖到CMake窗口中.

这时在Where is the source code:中会显示C:/OSG/OpenSceneGraph,Where to build the binaries:中会显示C:/OSG/OpenSceneGraph,修改binaries这一项,变成C:/OSG/OpenSceneGraph/build,点击Configure,会弹出一个编译器的选项,自动就行,不用改变,然后按ok,弹出Create Directory窗口,按 确定

8、修改 ACTUAL_3DPARTY_DIR这项,C:/OSG/3rdparty指向C:/OSG/OpenSceneGraph/3rdParty

2009年2月19日 - mochou123456 - 夏雪

修改 BUILD_OSG_ARAPPERS这项,OFF 改成 ON 其他不动

如果你想这时编译例子程序,可以修改BUILD_OSG_EXAMPLES这项,OFF 改成 ON

参数解释:

ACTUAL_3DPARTY_DIR:即整合的第三方开发库所在目录,如果下载了OSG提供的整合好的第三方开发库,那么可以在这里设置解压缩之后它的位置,CMake将在下次配置时自动搜索所需的Lib文件和头文件路径.

BUILD_OSG_EXAMPLES:是否编译OSG所有例子程序的选项.

BUILD_OSG_WRAPPERS: 这一项要选,不然后面编译自己的测试程序的时候,会报无法打开文件"osgIntrospectiond.lib"错误.

CMAKE_CONFIGURATION_TYPES:定义了工程文件中工程配置的种类,缺省值包括Debug,Release,MinSizeRelRelWithDebInfo四种类型.注意不同的配置类型在工程中对应不同的编译选项,可以在CMAKE_CXX_FLAGSCMAKE_EXE_LINKER_FLAGS中进行修改.

9、按下"Configure",进入第二次配置

10、按下"Configure",就会出现 OK可点击的状态

11、先不要急于按下"Configure",点击右上的选框"Show Advanced Values",可以看到列表框中的选项增加了.这其中很多选项是之前未经选择的.

这其中需要重新进行配置的主要是各个第三方开发库的头文件路径和Lib文件路径;如果用户平台上还有其他GUI,例如Qt,Fltk,wxWidgets,那么也需要在这里重新进行配置.
配置第三方开发库的相关参数时,主要需要配置以下两个参数的值:

……_INCLUDE_DIR:头文件的位置.
……_LIBRARY
:需要链接的静态库文件.

2009年2月19日 - mochou123456 - 夏雪

12、按下OK
13
、进入C:/OSG/OpenSceneGraph/build文件夹下,选择OpenSceneGraph.sln,Debug模式下,选择 生成(B)-->生成 ALL_BUILD (U),然后耐心等待,编译好后,Release模式下,选择生成(B)-->生成 ALL_BUILD (U),然后耐心等待,最后的效果是,生成了DebugRelease下的libdll.

(debug版本在一个半小时左右,本例也是debug版本)

注:在vs2005下可能出现不能识别的字符,解决方法,给缺少引号的字符串加上相应的引号。

三、建立环境

1、首先在C:/OSG/建一个目录,OSG2.6,在这个目录下分别建debug,release目录,在这些目录下建lib,bin目录,还要在OSG2.6目录下建一个include目录
2
、拷贝文件

ainclude下文件:

C:/OSG/OpenSceneGraph/3rdParty/include/,把所有的文件拷贝到C:/OSG/OSG2.6/include.

C:/OSG/OpenSceneGraph/include/,把所有的文件拷贝到C:/OSG/OSG2.6/include.

C:/OSG/OpenSceneGraph/build/include OpenThreads下的Config.h文件和osg下的Config.h文件,把这些分别文件拷贝到C:/OSG/OSG2.6/include相应的文件夹下.

bdebug文件夹下的bin中的文件:

把下载后的msvcpd71.dllmsvcr71d.dll文件解压后,拷贝到debug/bin. C:/OSG/OpenSceneGraph/3rdParty/bin/,把所有D.dll结尾的文件拷贝到debug/bin.

C:/OSG/OpenSceneGraph/build/bin/,把所有的.dll.exe结尾的文件结尾的文件拷贝到debug/bin.

C:/OSG/OpenSceneGraph/build/bin/osgPlugins-2.6.0/,把所有的.dll结尾的文件结尾的文件拷贝到debug/bin.

cdebug文件夹下的lib中的文件:

C:/OSG/OpenSceneGraph/3rdParty/lib/,把所有D.lib结尾的文件,拷贝到debug/lib.

C:/OSG/OpenSceneGraph/build/lib/debug/,把所有lib结尾的文件,拷贝到debug/lib.

3、设置环境变量,系统变量

(修改将导致cmd下的osg命令无效,这样安装包默认运行的bin与生成的bin是有区别的,而在开发环境下运行我们编译生成的bin,否则会出现

Could not find plugin to write nodes to file "**.osg"使用的osg插件没有经过编译,例如自带的osgplugins-2.6.0

cmd下的osg命令无效的解决方法,见下面”)

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

Path:在本例中将其改为C:/OSG/OSG2.6/debug/bin(默认为C:/Program Files/OsgChina/OpenSceneGraph/bin)(改变该变量不用重启即可生效)

OSG_NOTIFY_LEVEL DEBUG_FP

OSG_ROOT     C:/OSG/OSG2.6/debug/
OSG_FILE_PATH C:/OSG/OSG2.6/data/ (
默认为C:/Program Files/ OsgChina / OpenSceneGraph/data)

8、配置vs8

a、启动Microsoft Visual Studio 2005建立一个Win32控制台项目,在应用程序设置选项卡里,选择空项目,点击完成.

b、解决方案" 选择 源文件 右击-->添加(D)-->添加新项(W)-->C++文件(.cpp)-->名称(N): Test-->打开(O)

 OpenSceneGraph运行需要多线程DLL的运行时库和RTTI,所以,在建立每个OpenSceneGraph工程后,第一件事就是更改工程设置.
(
由于我们现在使用的是Debug版本,所以只用填写Debug信息)

具体步骤:项目(Test) 属性-->配置(C)-->Debug

打开项目属性,C/C++选项卡里,点击代码生成页,更改运行时库,对于Debug,用多线程调试 DLL (/Mdd),对于Release,用多线程 DLL (/MD).

设置C/C++选项卡里的语言页的启用运行时类型信息为: (Debug版下设置)

链接器-->System-->子系统-->选择 控制台(/SUBSYSTEM:CONSOLE)

OpenSceneGraph程序需要链接对应的库文件,打开链接器选项卡里的输入页,设置附加依赖项,具体步骤:链接器-->输入-->附加依赖项 中填写
OpenThreadsd.lib

osgd.lib

osgDBd.lib

osgFXd.lib

osgGAd.lib

osgIntrospectiond.lib

osgManipulatord.lib

osgParticled.lib

osgShadowd.lib

osgSimd.lib

osgTerraind.lib

osgTextd.lib

osgUtild.lib

osgViewerd.lib-->确定-->确定

设置编译时头文件路径
工具-->选项-->项目-->VC++ 目录-->显示以下内容的目录(S)-->包含文件如果 如果没有C:/OSG/OSG2.6/include 一项,则在最后面创建一个新的目录-->最后行的地方双击,添上C:/OSG/OSG2.6/include

设置编译时库文件路径

工具-->选项-->项目-->VC++ 目录-->显示以下内容的目录(S)-->库文件如果没有C:/OSG/OSG2.6/debug/lib这一项,在最后面创建一个新的目录-->最后行的地方双击,添上 C:/OSG/OSG2.6/debug/lib

这样,工程属性就设置好了

注:如果在编译时出现不识别OpenThreadsd.liblib文件,那么可能是库文件的路径设置有误,或者是这些库文件名被添加了引号或空格,只要在设置附加依赖项中修改即可。

四、环境设置好之后的问题:

1、在cmd中无法识别osg的命令

解决:把环境

2009年2月19日 - mochou123456 - 夏雪

PATH改为C:/OSG/OSG2.6/debug/bin

然后把系统的环境变量改为安装是默认(C:/ProgramFiles/OsgChina/OpenSceneGraph /bin)的,或者在上一步(第三部分的第3)时直接不要修改环境变量。

2、此时会现生成cmd.exe时出错

VC2005里打开工具菜单,选择选项,打开选项对话框。然后展开项目和解决方案项,选择“VC++目录,然后再其中添加如下这三项就可以了。如下图

$(SystemRoot)/System32
$(SystemRoot)
$(SystemRoot)/System32/wbem  

 

 

2009年2月19日 - mochou123456 - 夏雪


 

3VC2005 发布程序的问题:"应用程序正常初始化失败"

vs补丁

 

英文补丁 431M

http://download.microsoft.com/download/6/3/c/63c69e5d-74c9-48ea-b905-30ac3831f288/VS80sp1-KB926601-X86-ENU.exe
中文补丁http://download.microsoft.com/download/8/0/7/8071514d-9370-45c3-8af1-4ff09a70e59d/VS80sp1-KB926604-X86-CHS.exe

五、例子

在创建的Test文件中输入以下代码生成一个Simple.osg文件,文件存放于工程的当前目录下(本例为E:/三维系统/testIn8/testIn8),如果要打开系统已有例子的文件,直接使用文件名即可,前提是OSG_FILE_PATH设置正确。

 #include <osgViewer/Viewer>

#include <osgDB/ReadFile>

#include<osg/Geode>

#include<osg/Geometry>

#include<osg/ref_ptr>

#include<osgDB/Registry>

#include<osgDB/WriteFile>

#include<osg/Notify>

#include<iostream>

using std::endl;

 

osg::ref_ptr<osg::Node>createSceneGraph()

{

    //创建一个用于保存几何信息的对象

    osg::ref_ptr<osg::Geometry>geom=new osg::Geometry;

 

    //创建四个顶点的数组

    osg::ref_ptr<osg::Vec3Array>v=new osg::Vec3Array;

    geom->setVertexArray(v.get());

    v->push_back(osg::Vec3(-1.f,0.f,-1.f));

    v->push_back(osg::Vec3(1.f,0.f,-1.f));

    v->push_back(osg::Vec3(1.f,0.f,1.f));

    v->push_back(osg::Vec3(-1.f,0.f,1.f));

 

    //创建四种颜色的数组

    osg::ref_ptr<osg::Vec4Array> c=new osg::Vec4Array;

    geom->setColorArray(c.get());

    geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);

    c->push_back(osg::Vec4(1.f,0.f,0.f,1.f));

    c->push_back(osg::Vec4(0.f,1.f,0.f,1.f));

    c->push_back(osg::Vec4(0.f,0.f,1.f,1.f));

    c->push_back(osg::Vec4(1.f,1.f,1.f,1.f));

    //为唯一的法线创建一个数组

    osg::ref_ptr<osg::Vec3Array>n=new osg::Vec3Array;

    geom->setNormalArray(n.get());

    geom->setNormalBinding(osg::Geometry::BIND_OVERALL);

    n->push_back(osg::Vec3(0.f,-1.f,0.f));

    //由保存的数据绘制四个顶点的多边形

    geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4));

    //Geode类中添加几何体(Drawable)并返回Geode

    osg::ref_ptr<osg::Geode>geode=new osg::Geode;

    geode->addDrawable(geom.get());

    return geode.get();

}

int main(int,char**)

{

    osg::ref_ptr<osg::Node>root=createSceneGraph();

    if(!root.valid())

    osg::notify(osg::FATAL)<<"Failed in createSceneGraph()."<<endl;

    bool result=osgDB::writeNodeFile(*(root.get()),"Simple.osg");

    if(!result)

    osg::notify(osg::FATAL)<<"Failed in osgDB::writeNode()."<<endl;

    else

    {

       osgViewer::Viewer viewer;

       viewer.setSceneData(osgDB::readNodeFile(("Simple.osg")));

       return viewer.run();

    }

}

运行结果

2009年2月19日 - mochou123456 - 夏雪

 

 

 

补充(2009.10.11)
如果使用的是osg 2.8的版本。直接安装后用cmake生成源码就可以了。

配置的话,建议作以下选择

Windows下编译 OpenSceneGraph - 夏雪 - 夏雪

 

ACTUAL_3DPARTY_DIR

即整合的第三方开发库所在目录,2.8的版本里也还是用以上提到的那一个,即

http://www.openscenegraph.org/downloads/dependencies/3rdParty_Win32binaries_2005_05_10.zip

BUILD_OSG_EXAMPLES:是否编译OSG所有例子程序的选项.(强烈建议选择这一项,这样可以看osg自带的例子,可以给学习过程带来很大的帮助)

BUILD_OSG_WRAPPERS: 这一项要选,不然后面编译自己的测试程序的时候,会报无法打开文件"osgIntrospectiond.lib"错误.

 

配置完成后,打开生成的源码工程,在作如下设置

Windows下编译 OpenSceneGraph - 夏雪 - 夏雪

 

Windows下编译 OpenSceneGraph - 夏雪 - 夏雪

 

 

而可执行文件则不需要再像2.6版那样,做那么多“不可思议”的工作了。保持默认即可,配置正确情况下应该是这样

Windows下编译 OpenSceneGraph - 夏雪 - 夏雪

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧医院整体技术解决方案旨在通过集成先进的信息技术,提升医院的运营效率和服务质量。以下是一个智慧医院整体技术解决方案的概述: 基础设施层:这是智慧医院建设的基石,包括网络架构、数据中心、硬件设备等。要确保医院内部各个系统之间的互联互通,同时保证数据的安全性和可靠性。 数据平台层:通过构建统一的数据平台,实现医院内部各个业务系统的数据整合和共享。这包括患者信息、医疗影像、实验室检验结果等数据的集中存储和管理。 业务应用层:基于数据平台层提供的数据支持,开发各类业务应用系统,如电子病历系统、临床决策支持系统、远程医疗服务系统等。这些系统可以帮助医生提高诊疗效率,为患者提供更好的医疗服务。 智慧服务层:通过智能化设备和系统,提升患者的就医体验。例如,可以通过移动医疗应用实现预约挂号、在线咨询、报告查询等服务;通过智能导诊系统帮助患者快速找到适合的科室和医生;通过智能穿戴设备监测患者的健康状况等。 安全管理层:确保智慧医院系统的安全稳定运行。这包括网络安全、数据安全、设备安全等方面的管理。通过采用先进的安全技术和手段,保障医院信息系统的安全性和稳定性。 在实施智慧医院整体技术解决方案时,还需要考虑以下因素: 标准化和规范化:制定统一的标准和规范,确保各个系统之间的兼容性和互操作性。 数据治理和隐私保护:加强数据治理和隐私保护工作,确保患者信息的安全性和隐私性。 人才培养和团队建设:加强医院内部的信息技术人员培养和团队建设,提高医院的整体信息化水平。 持续创新和优化:不断关注新技术和新模式的发展,持续优化和完善智慧医院系统,提升医院的竞争力和服务质量。 总之,智慧医院整体技术解决方案是一个复杂而系统的工程,需要综合考虑医院的实际需求和发展目标,采用先进的信息技术和手段,实现医院运营的数字化、智能化和高效化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值