OSG入门即osgEarth建立一个地球的详细步骤
开始osg编程之前要做osg的编译准备,这里作为初学者最好选择简单的方法先熟悉为主。我们先下载一个编译好的VS2010+OSGEarth,
第一步、下载编译包
OSG3.1.4和osgEarth2.3 VC10编译包
下载地址:
http://pan.baidu.com/share/link?shareid=107009&uk=2801833827
第二步、建立目录
在你的硬盘里建立一个目录,我就在E盘建立一个osgearth的目录,并把下载的压缩包复制到E:\osgearth\中并且解压,解压后发现E:\osgearth\OSG里的文件如下图所示:
第三步、设置环境变量
1、如何设置环境变量
右击我的电脑—>属性 ,如下图所示:
这是点其中的“高级系统设置” 选项卡如下图所示:
点击下方的“环境变量”选项如下图所示:
2、设置具体环境变量值
我们设置的环境变量值是在系统变量中,
这时我要点击“新建”创建相应的选项,出现:这里的变量值是根据你的创建的目录来定,之后确定就好。新建玩着一项后,我们还要用同样的办法新建几个选项如下:
把osg的bin目录添加到环境变量;
进入如下图目录打如下命令;
点击回车键后出现一个纹理地球:表明环境已经配置好;
VC++ 2010新建一个控制台工程;
项目属性;
把osg的包含目录添加到VC++目录-包含目录;
库目录添加osg的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
代码如下:
#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("mymap.earth");
root->addChild(node.get());
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
return 0;
}
这个代码编写完之后还要编写mymap.earth文件,这里用NotePad++软件编辑,内容如下:
<map name="MyMap" type="geocentric" version="2">
<image name="bluemarble" driver="gdal">
<url>world.tif</url>
</image>
</map>
编辑好之后把mymap.earth文件复制到你项目所在目录,F:\OSG\osgVR\osgVR
osg安装目录下的data目录中有一个world.tif文件,拷贝到项目中;
构建项目;
如果出现下述错误,
fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
在项目属性中,清单工具-输入和输出,嵌入清单,由是改为否,如下图;
再次构建项目。地球出来。此地球是可以用鼠标拖动转动的;可以用鼠标中键缩放;