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、设置具体环境变量值
我们设置的环境变量值是在系统变量中,
(2)变量名: OSG_WINDOW
变量值:600 15 800 800 注意这个值可以固定就用这个无关紧要
完成上述步骤之后接下来的一步有些不同,这次我们不是新建而是编辑其中的选项内容,编辑的选项如下图所示:
打开vs2010新建一个名为osgVR的控制台应用程序,之后进行设置,
②设置项目属性,添加包含文件目录和库文件目录
这里仅设置Debug版为例,Release版与此类似
需要注意的是:Debug版此时对于链接器输入lib文件名后缀比Release版多一个字母d,表示debug版,
右击弹出菜单选择“属性”
其中“配置(C)”项说明是对Debug还是Release版,根据需要选择
需要设置三项分别是包含文件目录include、lib库文件目录和链接器
附加依赖项为,其中并没有加入osgEarth相关
- 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文件复制到你项目所在目录,深度和我的一样即可:E:\vs2010Progam Files\osgVR74\osgVR74,同时也要把world.tif这个tif文件放在和mymap.earth同一级目录下面。
完成这些时就可以编译执行,成果如下所示:
OSG入门即osgEarth建立一个地球的详细步骤的更多相关文章
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:建立一个EF数据模型
英文渣水平,大伙凑合着看吧…… 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第一篇: ...
- 使用 MVC 5 的 EF6 Code First 入门 系列:建立一个EF数据模型
这是微软官方SignalR 2.0教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第一篇:建立一个E ...
- 通过GitHub Pages建立个人站点(详细步骤)
1 Git简介 2 为什么使用Github Pages 3 创建Github Pages 3.1 安装git工具. 3.2 两种pages模式 3.3 创建步骤 3.4 常用命令 4 使用Jekyll ...
- 在win7上建立本地FTP站点详细步骤
一.安装FTP组件点击:控制面板—>程序和功能—>打开或关闭Windows功能. 勾选“FTP服务器”及“FTP服务”“FTP扩展性”,点击“确定”,安装FTP组件. 勾选Web管理工具的 ...
- Linux驱动之建立一个hello模块
目标:在开发板上执行insmod hello.ko能在控制台打印出hello init:接着执行rmmod会在控制台打印出hello exit 建立一个hello模块的步骤如下: 1.建立一个hell ...
- Cesium入门-1-展示一个地球
Cesium 官网教程地址 https://cesium.com/docs/tutorials/getting-started//tutorials/getting-started/ 第一个程序代码: ...
- 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...
- 使用NDK c++建立一个Android应用
使用NDK c++建立一个Android应用 一.工具 ADT(集成了eclipse,cdt,ndk plug-in) NDK (用它来编译c/c++程序) JDK (Java开发包) ANT(ecl ...
- 【SSRS】入门篇(二) -- 建立数据源
原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...
随机推荐
- php开发(CI框架使用)
年前接了一个外包项目,要求使用PHP,琢磨来琢磨去,感叹道PHP框架实在是太多了!去知乎搜索一轮,最后决定使用CI, 相关议论如下:https://www.zhihu.com/question/216 ...
- java 杂物间 (二) Spring Web
需要明确记住的继承关系
- PMP - 项目管理思维导图
- [Unity3D插件]2dtoolkit系列二 动画精灵的创建以及背景图的无限滚动
经过昨天2dtoolkit系列教程一的推出,感觉对新手还有有一定的启发作用,引导学习使用unity 2dToolKit插件的使用过程,今天继续系列二——动画精灵的创建,以及背景图的无限循环滚动,在群里 ...
- loj 1044(dp+记忆化搜索)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26764 思路:dp[pos]表示0-pos这段字符串最少分割的回文 ...
- Streaming data from Oracle using Oracle GoldenGate and Kafka Connect
This is a guest blog from Robin Moffatt. Robin Moffatt is Head of R&D (Europe) at Rittman Mead, ...
- TextView展开和收回
第一步:接口请求返回数据 第二步:使用handler和textview.getLineCount方法判断是否超过指定行数: community_desc_more.setVisibility(View ...
- loadrunner取出字符串的后面几位
Action() { char *phonenum; int k=1; phonenum=lr_eval_string("{phoneNum}");//参数化获取 ...
- CLR 初步
1. 源代码编译为托管模块 程序在.NET框架下运行,首先要将源代码编译为 托管模块.CLR是一个可以被多种语言所使用的运行时,它的很多特性可以用于所有面向它的开发语言.微软开发了多种语言的编译器,编 ...
- [DB那些事]数据库加密
说到数据库加密,目前最好且唯一的方案就是SqlCipher对sqlite3整体加密,微信也用的它.开源,且支持很多平台. 单就Android来说,集成不算太麻烦,1个jar包,3个so库,1个zip. ...