Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

时间:2021-12-23 19:06:58

OpenSceneGraph3.0.1for VS2010-X86-32bit平台

OpenSceneGraph库下载(Binary版Debug和Release版都有)

----------------------------------------------------------------------------------------------------

一、下载库文件

首先到官网 OSG官网binary下载地址或者以上网址下载OSG编译好的动态链接库文件,下载之后解压到合适的目录。

我的新建一OSG目录,然后建立库文件目录

Release版新建目录为OpenSceneGraph,拷贝相应的文件(只include和lib目录即可),bin目录下存放的是对应的dll文件,发布程序时需放在与可执行文件相同的目录下

Debug版新建目录为OpenSceneGraphD,拷贝响应的文件(只include和lib目录即可),bin目录下存放的是对应的dll文件,发布程序时需放在与可执行文件相同的目录下

为了方便,Release和Debug包含文件和库文件路径统一为同一个路径,可以将Debug版下的bin文件相应的xxx_xxd.dll拷贝到Release版bin目录下,Debug版下的lib目录下文件拷贝到Release版lib目录下。

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

开发程序的话,使用OSG的话上面所说的include和lib目录就可以了,其中include目录保存包含文件,lib目录保存库文件,另外发布程序还需bin目录下的dll

其余各目录分别为:

①bin目录

其中bin目录下放的发布程序依赖的DLL,另外bin目录下还有OSG已经编译好的一些实用可执行程序工具,比如

场景浏览器osgViewer

版本信息查看器osgVersion

场景图形压缩归档工具osgArchive

数据转换工具osgConv

②data目录

存放示例程序的一些模型文件和图片文件

③doc目录

有两个目录

《OpenSceneGraphReferenceDocs》

OSG的帮助文档,宏定义、类型定义和函数说明、文件组织目录等

《OpenThreadsReferenceDocs》

OpenThreads帮助文档

其中OpenThreads是一个跨平台,面向对象的线程库。此开源工程在SourceForge上的链接为: http://openthreads.sf.net

OpenSceneGraph及OpenProducer均使用OpenThreads提供全部的线程开发支持。

以下的文字可以在点击OpenThreads的链接滞后看到:

 

OpenThreads核心CVS服务器已经改变了!OpenThreads的CVS服务器已经放置于openscenegraph.org上。用户不必登陆SourceForge或者openscenegraph.org以获取OpenThread的更新版本。请使用下面的命令签出:

cvs -d :pserver:cvsguest@openscenegraph.org:/cvs/openthreads co OpenThreads 

这样用户就可以获得最新CVS版本的OpenThreads了。

④share目录

share\OpenSceneGraph\bin保存示例程序

 

二、设置环境变量

为了方便使用OSG提供的bin中的实用工具,需要把目录加到环境变量中

为了使用data中的数据,也需加到环境变量中

系统环境变量对所有用户起作用,而用户环境变量只对当前用户起作用

方法如下:

右击“我的电脑”图标→属性→高级→环境变量

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

添加环境变量

PATH为你所在的上面的osgbin目录,我这里为E:\OSG\OpenSceneGraph\bin,当然示例程序的路径也可加到这里,我的为E:\OSG\OpenSceneGraph\share\OpenSceneGraph\bin,多个目录之间用“;”分号隔开

E:\OSG\OpenSceneGraph\bin;E:\OSG\OpenSceneGraph\share\OpenSceneGraph\bin

OSG_FILE_PATH为数据目录,我这里为E:\OSG\OpenSceneGraph\data

 

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

环境变量配置结束。

---------------------------------------------------------------------------------------------------------------------------------------------------------------

测试(E:\OSG\OpenSceneGraph\bin下)实用工具

运行命令行——按下Windows图标+R

输入cmd

输入osgviewer cow.osg

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

正常的话全屏显示cow三维场景,其他几个实用工具也可以测试

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

--------------------------------------------------------------------------------------------------

测试(E:\OSG\OpenSceneGraph\share\OpenSceneGraph\bin下)例子

运行命令行——按下Windows图标+R

输入cmd

在命令行下输入

osgforest.exe

显示如下

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

 

三、编写第一个程序

 

下面,让我们开始新建第一个OpenSceneGraph项目。

①新建控制台程序

“文件”→“新建项目”→Win32 控制台程序,名称osgVR,根据向导默认到完成。 Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

设置项目属性,添加包含文件目录和库文件目录

这里仅设置Debug版为例,Release版与此类似

需要注意的是:Debug版此时对于链接器输入lib文件名后缀比Release版多一个字母d,表示debug版,

右击弹出菜单选择“属性”

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

其中“配置(C)”项说明是对Debug还是Release版,根据需要选择

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

需要设置三项分别是包含文件目录include、lib库文件目录和链接器

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

下面j截图中的osgPaticled.lib修改为osgParticled.lib,所有链接如下

OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUtild.lib
osgViewerd.lib

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

 

③编写代码

只需修改osgVR.cpp代码如下
#include "stdafx.h"
#include <osgViewer/viewer>
#include <osg/Node>
#include <osg/geode>
#include <osg\group>
#include <osgDB/readfile>
#include <osgDB/writefile>
#include <osgUtil\optimizer>

int _tmain(int argc, _TCHAR* argv[])
{
osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer();
osg::ref_ptr<osg::Group> root=new osg::Group();
osg::ref_ptr<osg::Node> node=osgDB::readNodeFile("cow.osg");


root->addChild(node.get());
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
return 0;
}
 

此时调试或运行会提示找不到×××.dll文件,原因在于我们并没有加入到目录中,

拷贝E:\OSG\OpenSceneGraphD\bin(Debug版dll)目录下的所有文件到与当前生产的可执行文件相同目录,

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

比如当前生成的为Debug版可执行程序osgVR.exe,路径为E:\test\OSG\osgVR\Debug\osgVR.exe,那么当前可执行程序所在目录则是E:\test\OSG\osgVR\Debug\。

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

此时双击osgVR.exe,运行结果如下。

需要注意的是,这里可以显示cow,是因为cow.osg文件所在的data目录加入到了环境变量中,程序会自动搜索包含在环境路径中的目录,

osg::ref_ptr<osg::Node> node=osgDB::readNodeFile("cow.osg");

这里使用的是相对路径

如果需要读取的文件不在搜索范围内,需要把文件加入到程序可以搜索到的目录内,如果文件名不加任何路径,默认为当前程序所在目录,也就是osg.exe所在目录,只要把需要读取的文件与osgVR.exe放在同一个文件夹下即可。

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

 

第0课结束

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

VS2010中已经不能通过设置工具→选项来设置包含文件和库文件目录,如下图所示

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序

单击右上角?图标,查看MSDN帮助链接,看到如下界面

目录类型

可以指定下列目录类型。

可执行目录

搜索可执行文件的目录。对应于 PATH 环境变量。

包含目录

搜索在源代码中引用的包含文件的目录。对应于 INCLUDE 环境变量。

引用目录

搜索通过 #using 指令在源代码中引用的程序集和模块(元数据)文件的目录。对应于 LIBPATH 环境变量。

库目录

搜索库(包括运行时库)的目录。对应于 LIB 环境变量。

源目录

搜索用于 IntelliSense 的源文件的目录。

排除目录

检查生成依赖项时,不会搜索目录。

指定每个项目的目录列表

  1. “项目”菜单上,单击“属性”有关更多信息,请参见 如何:打开项目属性页

  2. “属性页”对话框中,单击“配置属性”,然后单击“VC++ 目录”

  3. 若要编辑一个目录列表,请单击其名称、单击显示的箭头,然后单击“编辑”以为所选的目录类型打开一个对话框。

    可以添加或删除值,也可以重新排列已添加的任何值。您还可以选择或清除“继承来自父或项目的默认值”

    Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序注意

    默认情况下,用 Visual Studio 继承标准目录列表创建项目。

指定每个用户的目录列表

  1. “视图”菜单中,单击“属性管理器”

  2. “属性管理器”中,单击配置和平台节点;例如“调试 | Win32”

    节点展开并显示用户属性页,如“Microsoft.Cpp.”<平台>“.user”,其中 <平台> 是系统定义的值,如“Win32”“X64”项目的 <platform> 值与平台必须相同。

  3. 双击用户属性表或单击用户属性表,然后在快捷菜单中单击“属性”

    此时将显示 <用户属性表>“属性页”对话框,并突出显示“VC++ 目录”节点。

  4. 编辑目录列表,如“指定项目目录列表”的步骤 3 中的前面部分所述。

 --------------------------------------------------

error c101008d: Failed to write the updated manifest to the resource of file 

错误 92 error c101008d: Failed to write the updated manifest to the resource of file 

 

解决方案决方案

项目属性——配置属性——链接器——清单文件中,把生成清单改成否就行了  <--  可能会导致编译好的库无法注册(我遇到过)

Linker --> Manifest File

项目属性——配置属性——清单工具——输入和输出中,把嵌入清单改成否  < --

Manifest Tool --> Input and Output

Archie OSG Step By Step( 0) -OpenSceneGraph环境设置及第一个程序