OSG入门即osgEarth建立一个地球的详细步骤

转:http://blog.csdn.net/xiaol_deng/article/details/9246291

最近在学习有关osg的知识,刚开始一头雾水,幸好在老师的指导下才茅塞顿开,同时又结合网上的多个资料总结

一下作为一个初学者入门的经验。希望广大初学者少走弯路!

开始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_ROOT
变量值:E:\osgearth\OSG
这里的变量值是根据你的创建的目录来定,之后确定就好。新建玩着一项后,我们还要用同样的办法新建几个选项如下:
(1)    变量名:OSG_FILE_PATH
             变量值:E:\osgearth\OSG\data     注意这里也是根据具体情况定的

(2)变量名: OSG_WINDOW

变量值:600 15 800 800     注意这个值可以固定就用这个无关紧要
完成上述步骤之后接下来的一步有些不同,这次我们不是新建而是编辑其中的选项内容,编辑的选项如下图所示:

从图中可知就是编辑Path选项,选中之后点击下面编辑键,出现下图:
 
把变量值改成E:\osgearth\OSG\bin即可,注意这里我的是改好的,你们的刚开始可能不一样不要紧的。这些改好之后就点确定就行直到退出环境变量设置。
第四步、设置文件目录属性 

打开vs2010新建一个名为osgVR的控制台应用程序,之后进行设置,

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

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

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

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

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

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

附加依赖项为,其中并没有加入osgEarth相关

  1. OpenThreadsd.lib
  2. osgd.lib
  3. osgDBd.lib
  4. osgFXd.lib
  5. osgGAd.lib
  6. osgManipulatord.lib
  7. osgParticled.lib
  8. osgShadowd.lib
  9. osgSimd.lib
  10. osgTerraind.lib
  11. osgTextd.lib
  12. osgUtild.lib
  13. osgViewerd.lib

第五步、编写代码

print?

  1. #include "stdafx.h"
  2. #include <osgViewer/viewer>
  3. #include <osg/Node>
  4. #include <osg/geode>
  5. #include <osg\group>
  6. #include <osgDB/readfile>
  7. #include <osgDB/writefile>
  8. #include <osgUtil\optimizer>
  9. int _tmain(int argc, _TCHAR* argv[])
  10. {
  11. osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer();
  12. osg::ref_ptr<osg::Group> root=new osg::Group();
  13. osg::ref_ptr<osg::Node> node=osgDB::readNodeFile("mymap.earth");
  14. root->addChild(node.get());
  15. osgUtil::Optimizer optimizer;
  16. optimizer.optimize(root.get());
  17. viewer->setSceneData(root.get());
  18. viewer->realize();
  19. viewer->run();
  20. return 0;
  21. }

这个代码编写完之后还要编写mymap.earth文件,这里用NotePad++软件编辑,内容如下:

  1. <map name="MyMap" type="geocentric" version="2">
  2. <image name="bluemarble" driver="gdal">
  3. <url>world.tif</url>
  4. </image>
  5. </map>

编辑好之后把mymap.earth文件复制到你项目所在目录,深度和我的一样即可:E:\vs2010Progam Files\osgVR74\osgVR74,同时也要把world.tif这个tif文件放在和mymap.earth同一级目录下面。

完成这些时就可以编译执行,成果如下所示:

OSG入门即osgEarth建立一个地球的详细步骤的更多相关文章

  1. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:建立一个EF数据模型

    英文渣水平,大伙凑合着看吧…… 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第一篇: ...

  2. 使用 MVC 5 的 EF6 Code First 入门 系列:建立一个EF数据模型

    这是微软官方SignalR 2.0教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第一篇:建立一个E ...

  3. 通过GitHub Pages建立个人站点(详细步骤)

    1 Git简介 2 为什么使用Github Pages 3 创建Github Pages 3.1 安装git工具. 3.2 两种pages模式 3.3 创建步骤 3.4 常用命令 4 使用Jekyll ...

  4. 在win7上建立本地FTP站点详细步骤

    一.安装FTP组件点击:控制面板—>程序和功能—>打开或关闭Windows功能. 勾选“FTP服务器”及“FTP服务”“FTP扩展性”,点击“确定”,安装FTP组件. 勾选Web管理工具的 ...

  5. Linux驱动之建立一个hello模块

    目标:在开发板上执行insmod hello.ko能在控制台打印出hello init:接着执行rmmod会在控制台打印出hello exit 建立一个hello模块的步骤如下: 1.建立一个hell ...

  6. Cesium入门-1-展示一个地球

    Cesium 官网教程地址 https://cesium.com/docs/tutorials/getting-started//tutorials/getting-started/ 第一个程序代码: ...

  7. 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)

    背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...

  8. 使用NDK c++建立一个Android应用

    使用NDK c++建立一个Android应用 一.工具 ADT(集成了eclipse,cdt,ndk plug-in) NDK (用它来编译c/c++程序) JDK (Java开发包) ANT(ecl ...

  9. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

随机推荐

  1. 使用zookeeper实现分布式锁

    简介: 核心是解决资源竞争的问题 分布式系统中经常需要协调多进程或者多台机器之间的同步问题,得益于zookeeper,实现了一个分布式的共享锁,方便在多台服务器之间竞争资源时,来协调各系统之间的协作和 ...

  2. php调用phpqrcode.php生成二维码

    下载phpqrcode.php 下载地址: http://files.cnblogs.com/files/qhorse/phpqrcode.rar qrcode.php文件: <?php inc ...

  3. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  4. [Windows驱动开发](四)内存管理

    一.内存管理概念 1. 物理内存概念(Physical Memory Address)     PC上有三条总线,分别是数据总线.地址总线和控制总线.32位CPU的寻址能力为4GB(2的32次方)个字 ...

  5. SQLServer 维护脚本分享(11)部分DBCC及系统存储过程

    --DBCC命令与用法 DBCC HELP('?') DBCC HELP('useroptions') DBCC USEROPTIONS WITH NO_INFOMSGS --当前DB的区及文件 DB ...

  6. 指针数组 vs 数组指针

        指针数组,故名思义,就是指针的数组,数组的元素是指针:     数组指针,同样,就是直想数组的指针.     简单举例说明:     int *p[2]; 首先声明了一个数组,数组的元素是in ...

  7. poj2385 dp(递推)

    题目链接 :http://bak3.vjudge.net/contest/136499#problem/D 题意: //转移方程dp[i][j]=max(dp[i-1][j],dp[i-1][j-1] ...

  8. css3 -- 背景图处理

    1.多背景图片: p{ background-image:url() , url(); background-position:95% 90% , 50% 50%; background-repect ...

  9. FastMM配置文件详解

    FastMM最新版本提供了中文语言包,可方便国内使用.下载地址为 http://sourceforge.net/projects/fastmm/ 配置文件为:FastMM4Options.inc, 中 ...

  10. Java解析HTML之HTMLParser使用与详解

    http://blog.csdn.net/jediael_lu/article/details/26285951